stream_socket_enable_crypto() Error: SSL Operation Failed with Code 1
When using PHP 5.6 and a GoDaddy SSL certificate on Amazon EC2 Linux, an error may arise during email sending with Mailgun or other SMTP services over 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
Root Cause
This error occurs due to stricter SSL certificate verification introduced in PHP 5.6. By default, PHP will check the domain name in the URL against the domain name in the certificate. Since GoDaddy's SSL certificate is a wildcard certificate, it does not match the specific domain name of your server.
Solution
There are two ways to resolve this issue:
Option 1: Disable Certificate Verification
<code class="php">'stream' => [ 'ssl' => [ 'allow_self_signed' => true, 'verify_peer' => false, 'verify_peer_name' => false, ], ],</code>
Caution: Disabling certificate verification can compromise the security of your application. It is recommended to use Option 2 instead, or upgrade to PHP 7.2 or later.
Option 2: Upgrade PHP
PHP versions 7.2 and later include a fix for this issue. Upgrading your PHP version will resolve this error and maintain the security of your application.
The above is the detailed content of How to Resolve \'stream_socket_enable_crypto(): SSL Operation Failed with Code 1\' Error Using PHP 5.6 and GoDaddy SSL?. For more information, please follow other related articles on the PHP Chinese website!