証明書の不一致により PHPMailer が PHP 警告を発する
PHPMailer ユーザーは、PHP 5.6 上の SMTP ホストに接続するときに警告が表示される場合があります:
PHP Warning: stream_socket_enable_crypto(): Peer certificate did not match expected
この警告は、SSL 証明書を厳密に検証する PHP 5.6 のセキュリティの強化に起因します。この警告は、SMTP ホストによって提示された証明書が、そのホストに予期された証明書と一致しないことを示唆しています。
根本原因:
SMTP ホストが提示したときに不一致が発生します。予想されるホスト名と一致する共通名 (CN) を持たない証明書。たとえば、mx1.sub4.homie.mail.dreamhost.com に接続していて、証明書 CN が *.mail.dreamhost.com の場合、PHP は警告を生成します。
解決策:
この問題を解決するには、次の 2 つの方法があります:
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
注: 証明書の検証を無効にすることはお勧めできません。一時的な解決策としてのみ使用してください。
結論:
PHP警告「stream_socket_enable_crypto(): ピア証明書が予期したものと一致しませんでした」には、SMTP ホストに連絡して証明書を更新するか、証明書の検証を無視するように PHPMailer を設定することで対処できます。推奨される解決策は、ホスト名と一致する有効な証明書を SMTP ホストに提供させることです。
以上がPHP 5.6 で PHPMailer が証明書の不一致に関する PHP 警告を発行するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。