stream_socket_enable_crypto() 错误:SSL 操作失败,代码 1
在 Amazon EC2 Linux 上使用 PHP 5.6 和 GoDaddy SSL 证书时,使用 Mailgun 或其他 SMTP 服务通过 SSL 发送电子邮件时可能会出现错误:
stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
根本原因
出现此错误是由于 PHP 中引入了更严格的 SSL 证书验证5.6.默认情况下,PHP 会根据证书中的域名检查 URL 中的域名。由于 GoDaddy 的 SSL 证书是通配符证书,与您服务器的特定域名不匹配。
解决方案
有两种方法可以解决此问题:
选项 1:禁用证书验证
<code class="php">'stream' => [ 'ssl' => [ 'allow_self_signed' => true, 'verify_peer' => false, 'verify_peer_name' => false, ], ],</code>
警告:禁用证书验证可能会危及应用程序的安全性。建议改用选项 2,或升级到 PHP 7.2 或更高版本。
选项 2:升级 PHP
PHP 版本 7.2 及更高版本包含此问题的修复问题。升级您的 PHP 版本将解决此错误并维护应用程序的安全性。
以上是如何使用 PHP 5.6 和 GoDaddy SSL 解决'stream_socket_enable_crypto():SSL 操作失败,代码 1”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!