LetsEncrypt 证书看似不在 PHPMailer、TLS、Openssl、file_get_contents 中时无效/过期,2021 年 9 月 30 日

bli*_*web 4 php openssl ssl-certificate phpmailer lets-encrypt

从 2021 年 10 月 1 日起,我遇到了 PHPMailer 突然说我的证书已过期并拒绝使用 TLS 加密正确连接到端口 587 的问题。

将 ssl 标志更改为 not verify_peer 和 not verify_peer_name 将临时修复电子邮件问题。

$mail->SMTPOptions = array (
    'ssl' => array(
        'verify_peer'  => false,
        'verify_peer_name'  => false,
        'allow_self_signed' => true
        
    ));
Run Code Online (Sandbox Code Playgroud)

但这并不是一个理想的解决方案。

如果我通过端口 80 和 Web 访问同一服务器,则证书没有任何问题。

如果我使用 OpenSSL 命令行连接,它会显示证书已于 2021 年 9 月 30 日过期。

这个问题也出现在php命令file_get_contents下。

注意:这个问题是 PHPMailer 和电子邮件特定的,并提供了有关 PHPMailer 的良好信息,不应将其关闭。除了原因和修复类似之外,它与 docker 或与其相关的其他问题无关。

bli*_*web 5

这里的问题是嵌入在 LetsEncrypt 链中的真实过期的权威证书,该证书确实于 2021 年 9 月 30 日过期。

\n

来自 openssl 博客 ...\n当前推荐的证书链(在颁发新证书时向 Let\xe2\x80\x99s Encrypt ACME 客户端提供)包含由旧 DST 根 CA 签名的中间证书(ISRG 根 X1) X3 证书将于 2021 年 9 月 30 日到期。在某些情况下,OpenSSL 1.0.2 版本会将 Let\xe2\x80\x99s Encrypt CA 颁发的证书视为具有过期的信任链。

\n

在此处阅读更多信息...\n https://www.openssl.org/blog/blog/2021/09/13/LetsEncryptRootCertExpire/

\n

它主要影响OpenSSL 1.0.2。在装有 OpenSSL 1.1.1 的 Mac 上,我没有遇到此问题。

\n

CentOS,我确信其他人已经提供了这个问题的修复...

\n

备份

\n
cp -i /etc/pki/tls/certs/ca-bundle.crt ~/ca-bundle.crt-backup\n
Run Code Online (Sandbox Code Playgroud)\n

将证书添加到黑名单目录

\n
trust dump --filter "pkcs11:id=%c4%a7%b1%a4%7b%2c%71%fa%db%e1%4b%90%75%ff%c4%15%60%85%89%10" | openssl x509 | sudo tee /etc/pki/ca-trust/source/blacklist/DST-Root-CA-X3.pem\n
Run Code Online (Sandbox Code Playgroud)\n

更新根存储

\n
sudo update-ca-trust extract\n
Run Code Online (Sandbox Code Playgroud)\n

验证删除

\n
diff ~/ca-bundle.crt-backup /etc/pki/tls/certs/ca-bundle.crt\n
Run Code Online (Sandbox Code Playgroud)\n

上述 CentOS 具体步骤来自这篇文章 ...\n https://blog.devgenius.io/rhel-centos-7-fix-for-lets-encrypt-change-8af2de587fe4#:~:text=So%2C %20DST%20Root%20CA%20X3%20需要%20到%20be,%20手动%20步骤%20下面%20是%20没有%20更长%20必要

\n

这是一个相当疯狂的问题,突然出现(除非你关注 openSSL 博客)

\n

我花了大约 1 天的时间进行追踪,但一直没有发送电子邮件,网站的大部分内容也没有出现。

\n

希望这能为人们指明正确的方向。

\n

更新:正如@hakre 所指出的,你也许可以逃脱......

\n
yum upgrade ca-certificates\n
Run Code Online (Sandbox Code Playgroud)\n

  • 对于 Centos 7:_“自 2021 年 9 月 24 日起,升级 ca 证书包 (2021.2.50–72) 应该可以解决该问题。版本 2021.2.50–72 删除了 DST Root CA X3。”_ - 手动步骤可以可以跳过,只需升级 ca-certificates 包即可。 (2认同)