Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php IMAP开放流:自签名证书颁发_Php_Certificate_Imap_Self Signed_Dovecot - Fatal编程技术网

Php IMAP开放流:自签名证书颁发

Php IMAP开放流:自签名证书颁发,php,certificate,imap,self-signed,dovecot,Php,Certificate,Imap,Self Signed,Dovecot,我正在尝试打开不安全(端口143)的IMAP连接(我使用的是PHP): 我得到了下一个错误:本地主机的证书失败:自签名证书… 嗯。我已尝试使用/novalidate cert邮箱参数。然后我遇到另一个错误:无法对IMAP服务器进行身份验证 我还尝试组合所有可能的非安全连接参数,如/notls、/norsh和/secure。但我总是犯错误 这是我正在使用的Dovecot配置: *正常[功能IMAP4rev1文字+SASL-IR登录-引用ID启用空闲启动TLS AUTH=LOGIN]多佛科特就绪。

我正在尝试打开不安全(端口143)的IMAP连接(我使用的是PHP):

我得到了下一个错误:
本地主机的证书失败:自签名证书…

嗯。我已尝试使用
/novalidate cert
邮箱参数。然后我遇到另一个错误:
无法对IMAP服务器进行身份验证

我还尝试组合所有可能的非安全连接参数,如
/notls
/norsh
/secure
。但我总是犯错误

这是我正在使用的Dovecot配置:

*正常[功能IMAP4rev1文字+SASL-IR登录-引用ID启用空闲启动TLS AUTH=LOGIN]多佛科特就绪。

证书实际上是自签名的,并使用openssl生成

问题是:

  • 为什么在使用非安全连接时发生证书错误
  • 邮件服务器配置有什么问题

  • STARTTLS当然使用证书来启动TLS通道,因此您会看到自签名证书错误
    无法进行身份验证
    ,但是,这意味着您的用户名和密码错误。尝试使用telnet登录以验证您的用户和密码是否正确使用此代码

       imap_open('{localhost:143/imap/novalidate-cert/debug}INBOX', USERNAME, PASS);
    
    而不是这个

        imap_open('{localhost:143/imap}INBOX', USERNAME, PASS); 
    

    身份验证错误将表明您的用户名和密码错误。@Max,是的,它使用的是STARTTLS,但它对证书有何影响?登录名和密码是正确的我想,我已经从Mysql数据库复制了它们,Mysql数据库是邮件和帐户的存储。StartTLS当然使用证书启动TLS通道,因此您看到了自签名证书错误
    无法进行身份验证
    ,但是,这意味着您的用户名和密码错误。请尝试使用telnet登录以验证您的用户和密码是否正确。@Max,thx。问题其实在于用户名和密码。但是错误信息真的让人困惑。谢谢!我已将我的评论升级为答案,以便您可以接受。为我使用
    /imap/ssl/novalidate cert
    。这里的关键是使用
    novalidate证书
    来确认没有针对已知CA验证证书的请求-谢谢提示。正如Max在回答中所说,
    无法验证
    是另一回事。一旦我设置了novalidate证书,我就登录到了dovecot。
        imap_open('{localhost:143/imap}INBOX', USERNAME, PASS);