在 PHP 中使用 IMAP 的证书错误

Posted

技术标签:

【中文标题】在 PHP 中使用 IMAP 的证书错误【英文标题】:Certificate error using IMAP in PHP 【发布时间】:2011-12-15 01:23:46 【问题描述】:

我用尽了所有可能的主机名组合,但我总是遇到证书错误或 IMAP 连接中断。

imap.froiden.com 的证书失败:服务器名称不匹配 证书:/O=imap.mailhostbox.com/OU=转到 https://www.thawte.com/repository/index.html/OU=ThawteSSL123 证书/OU=域验证/CN=imap.mailhostbox.com

我使用的主机名是'imap.froiden.comINBOX'。有解决此错误的建议吗?

【问题讨论】:

证书是为 imap.mailhostbox.com 颁发的 - 对于 SSL 连接,请求的主机名和颁发证书的主机名必须匹配,否则您将收到这些警告/错误。主机名不匹配(在恶意设置中)意味着有人试图欺骗/伪造某些东西。 @MarcB 好吧,我尝试了所有组合,但它不像 imap.froiden.com:993/imap/ssl 那样工作。我需要在主机上配置什么吗? 您应该使用 imap.mailboxhost.com:993/imap/ssl,假设证书是正确的并且它确实是从名为 imap.mailhostbox.com 的机器提供的 @MarcB:导致超时。 【参考方案1】:

证书完全无效。您应该连接到imap.mailboxhost.com:993/imap/ssl 或联系邮件服务器的管理员并索取有效证书。

请注意,虽然您可以使用连接字符串 imap.froiden.com:993/imap/ssl/novalidate-cert 跳过证书验证,但您不应该这样做,因为该标志将允许任何 Man In The Middle 攻击者阅读和撰写您的电子邮件。

【讨论】:

谢谢,imap.example.com/ssl/novalidate-certINBOX 确实有效 谢谢example.com:993/imap/ssl/novalidate-cert收件箱确实为我工作。我真的很开心。我想拥抱你。【参考方案2】:

我可以确认这运行良好:

$mb = imap_open("phoenix.srv.spletnasoba.si:993/imap/ssl/novalidate-cert","username", "password" );

$emails = array();
$messageCount = imap_num_msg($mb);
for( $MID = 1; $MID <= $messageCount; $MID++ )


    $EmailHeaders = imap_headerinfo( $mb, $MID );
    foreach($EmailHeaders as $key => $value) 
        if (validateEmail($value)) 
            $emails[$value] = $key;
            echo $value."\n";
        
    




function validateEmail($email) 
    return filter_var($email, FILTER_VALIDATE_EMAIL);

【讨论】:

【参考方案3】:

如果您使用的是 gmail,请确保在您的 google 帐户的帐户设置页面中打开“允许访问不太安全的应用程序”,以便您能够使用 imap_open() 访问您的 gmail 帐户

【讨论】:

以上是关于在 PHP 中使用 IMAP 的证书错误的主要内容,如果未能解决你的问题,请参考以下文章

PHP - SSL 证书错误:无法获取本地颁发者证书

PHP - SSL 证书错误:无法获取本地颁发者证书

PHP - SSL 证书错误:无法获取本地颁发者证书

如何修复智能手机中的证书错误[关闭]

Laravel 5.2.31 社交名流证书 ssl 错误

如何创建允许 PHP 通过 SSL 连接到 MySQL 的证书?