首页 >后端开发 >php教程 >为什么 PHPMailer 在 PHP 5.6 中发出有关证书不匹配的 PHP 警告?

为什么 PHPMailer 在 PHP 5.6 中发出有关证书不匹配的 PHP 警告?

Linda Hamilton
Linda Hamilton原创
2024-10-26 23:09:31746浏览

Why Does PHPMailer Emit a PHP Warning About a Mismatched Certificate in PHP 5.6?

PHPMailer 由于证书不匹配而发出 PHP 警告

PHPMailer 用户在 PHP 5.6 上连接到 SMTP 主机时可能会遇到警告:

PHP Warning: stream_socket_enable_crypto(): Peer certificate did not match expected

此警告源于 PHP 5.6 中增强的安全性,它严格验证 SSL 证书。该警告表明 SMTP 主机提供的证书与该主机的预期证书不匹配。

根本原因:

当 SMTP 主机提供时发生不匹配没有与预期主机名匹配的公用名 (CN) 的证书。例如,如果您连接到 mx1.sub4.homie.mail.dreamhost.com 并且证书 CN 为 *.mail.dreamhost.com,PHP 将发出警告。

解决方案:

要解决此问题,有两种方法:

  1. 联系 SMTP 主机:请求主机更新其 SSL 证书以拥有 CN与您要连接的主机名匹配。这是推荐且安全的解决方案。
  2. 配置 PHPMailer 以忽略证书验证:您可以通过设置以下 SMTPOptions 将 PHPMailer 配置为忽略证书不匹配:
$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer'  => false,
        'verify_peer_name'  => false,
        'allow_self_signed' => true
    )
);

注意:不建议禁用证书验证,只能作为临时解决方案。

结论:

PHP警告“stream_socket_enable_crypto():对等证书与预期不匹配”可以通过联系 SMTP 主机更新其证书或配置 PHPMailer 忽略证书验证来解决。推荐的解决方案是让 SMTP 主机提供与主机名匹配的有效证书。

以上是为什么 PHPMailer 在 PHP 5.6 中发出有关证书不匹配的 PHP 警告?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn