编程语言
首页 > 编程语言> > PHP – 使用STARTTLS和自签名证书的Swiftmailer

PHP – 使用STARTTLS和自签名证书的Swiftmailer

作者:互联网

我正在尝试使用STARTTLS发送带有php和swiftmailer的电子邮件,但我收到了证书错误.我具有SMTP服务器的root访问权限,并且使用的证书是自签名的.
我在两台机器上使用Debian(Web服务器和smtp服务器)

PHP消息:PHP警告:stream_socket_enable_crypto():SSL操作失败,代码为1. OpenSSL错误消息:
错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:第97行的[..] / lib / classes / Swift / Transport / StreamBuffer.php中的证书验证失败
PHP消息:PHP致命错误:[..] / lib / classes / Swift / Transport / EsmtpTransport.php中未捕获的异常’Swift_TransportException’,消息’无法连接TLS加密’:294

我是否需要在某个地方添加自己的证书才能接受它?或者这是一些OpenSSL配置错误?

解决方法:

Swiftmailer现已更新,包括一个选项.现在可以使用Swift_SmtpTransport实例中的setStreamOptions方法解决它,而不是编辑swift类.

$transport = Swift_SmtpTransport::newInstance('smtp.server.com', 123, 'tls')
    ->setUsername('username')
    ->setPassword('password')
    ->setStreamOptions(array('ssl' => array('allow_self_signed' => true, 'verify_peer' => false)));

标签:swiftmailer,self-signed,php,certificate,smtp
来源: https://codeday.me/bug/20190928/1828187.html