一尘不染

PHPMailer-SSL3_GET_SERVER_CERTIFICATE:证书验证失败

php

遇到了应从具有自签名证书的邮件服务器发送电子邮件的问题,我得到的错误是:

PHP Warning:  stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in class.smtp.php on line 327.

有没有人遇到过类似的事情?

编辑:

我也尝试过设置stream_context参数(params:SSL上下文选项):

$options['ssl']['verify_peer'] = false;
$options['ssl']['verify_peer_name'] = false;
$options['ssl']['allow_self_signed'] = true;

运气不好,它仍然会失败,并出现与上述相同的错误。

谢谢。


阅读 437

收藏
2020-05-26

共1个答案

一尘不染

PHP
5.6引入了SSL证书验证,因此,如果您的配置被破坏,它将因该错误而失败。您应该修复SSL,但是可以通过将SMTPOptions属性设置为不验证证书来恢复到旧的行为:

$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);

编辑库会破坏整个库的作用-如果按照Kaf的回答建议进行操作,则升级时代码会中断。真的,不要那样做。

编者注 :禁用SSL验证会带来 安全隐患。 如果没有验证SSL /
HTTPS连接的真实性,恶意攻击者可能会冒充受信任的终结点(例如GitHub或其他远程Git主机),并且您将容易受到中间人攻击使用此解决方案之前,请确保您完全了解安全问题。

2020-05-26