Maison >développement back-end >tutoriel php >Pourquoi PHPMailer émet-il un avertissement PHP concernant un certificat incompatible dans PHP 5.6 ?

Pourquoi PHPMailer émet-il un avertissement PHP concernant un certificat incompatible dans PHP 5.6 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-26 23:09:31751parcourir

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

PHPMailer émet un avertissement PHP en raison d'un certificat incompatible

Les utilisateurs de PHPMailer peuvent rencontrer un avertissement lors de la connexion à des hôtes SMTP sur PHP 5.6 :

PHP Warning: stream_socket_enable_crypto(): Peer certificate did not match expected

Cet avertissement découle de la sécurité accrue de PHP 5.6, qui vérifie strictement les certificats SSL. L'avertissement suggère que le certificat présenté par l'hôte SMTP ne correspond pas au certificat attendu pour cet hôte.

Cause première :

La non-concordance se produit lorsque l'hôte SMTP présente un certificat qui n'a pas de nom commun (CN) correspondant au nom d'hôte attendu. Par exemple, si vous vous connectez à mx1.sub4.homie.mail.dreamhost.com et que le certificat CN est *.mail.dreamhost.com, PHP émettra l'avertissement.

Solution :

Pour résoudre ce problème, il existe deux approches :

  1. Contacter l'hébergeur SMTP : Demander à l'hébergeur de mettre à jour son certificat SSL pour avoir un CN qui correspond au nom d'hôte auquel vous vous connectez. Il s'agit de la solution recommandée et sécurisée.
  2. Configurer PHPMailer pour ignorer la vérification du certificat : Vous pouvez configurer PHPMailer pour ignorer l'incompatibilité du certificat en définissant les options SMTP suivantes :
$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer'  => false,
        'verify_peer_name'  => false,
        'allow_self_signed' => true
    )
);

Remarque :La désactivation de la vérification du certificat n'est pas recommandée et ne doit être utilisée que comme solution temporaire.

Conclusion :

Le PHP L'avertissement « stream_socket_enable_crypto() : le certificat homologue ne correspond pas à celui attendu » peut être résolu soit en contactant l'hôte SMTP pour mettre à jour son certificat, soit en configurant PHPMailer pour ignorer la vérification du certificat. La solution recommandée consiste à demander à l'hôte SMTP de fournir un certificat valide correspondant au nom d'hôte.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn