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 或与其相关的其他问题无关。
这里的问题是嵌入在 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 上,我没有遇到此问题。
\nCentOS,我确信其他人已经提供了这个问题的修复...
\n备份
\ncp -i /etc/pki/tls/certs/ca-bundle.crt ~/ca-bundle.crt-backup\n
Run Code Online (Sandbox Code Playgroud)\n将证书添加到黑名单目录
\ntrust 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更新根存储
\nsudo update-ca-trust extract\n
Run Code Online (Sandbox Code Playgroud)\n验证删除
\ndiff ~/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 所指出的,你也许可以逃脱......
\nyum upgrade ca-certificates\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
3571 次 |
最近记录: |