stream_socket_enable_crypto() 錯誤:SSL 操作失敗,程式碼1
在Amazon EC2 Linux 上使用PHPaddy S.6 和GoDaddyD. 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中文網其他相關文章!