Unable to connect with STARTTLS: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed
こんなエラーメッセージが出たときの対処方法をBingAIに教えてもらったので共有します。
証明書の検証を無効にする
Laravel 9.Xでは、config/mail.php ファイルで verify_peer を false に設定することで、証明書の検証を無効にできます。
以下は設定例です。
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'local_domain' => env('MAIL_EHLO_DOMAIN'),
'verify_peer' => false, // 追加
],
],
AI で生成されたコード。ご確認のうえ、慎重にご使用ください。
証明書ファイルのパスを指定する
サーバーの証明書ファイルが正しく設定されていない場合、エラーが発生することがあります。
openssl.cafile を設定して、証明書ファイルのパスを指定してみてください。
openssl.cafile=/etc/ssl/certs/ca-bundle.crt
自分の場合
設定が大変そうなので無効にする方向で対応しました。