ホームページ >バックエンド開発 >PHPチュートリアル >PHP 5.6 で PHPMailer が証明書の不一致に関する PHP 警告を発行するのはなぜですか?

PHP 5.6 で PHPMailer が証明書の不一致に関する PHP 警告を発行するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-26 23:09:31752ブラウズ

Why Does PHPMailer Emit a PHP Warning About a Mismatched Certificate in PHP 5.6?

証明書の不一致により 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 つの方法があります:

  1. SMTP ホストに連絡します: CN を持つようにホストに SSL 証明書を更新するように要求します。接続先のホスト名と一致します。これは、推奨される安全なソリューションです。
  2. 証明書の検証を無視するように PHPMailer を構成する: 次の SMTPOptions を設定することで、証明書の不一致を無視するように PHPMailer を構成できます:
$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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。