Let's Encrypt証明書付きのPHPMailerを使用して電子メールを送信しようとしていますが、PHP 5.6に移行した後、ドメイン検証に失敗したため動作しません。TLS経由でメールを送信するためのPHPMailerでのPHP 5.6の問題
Connection failed. Error #2: stream_socket_enable_crypto(): SSL operation >failed with code 1. OpenSSL Error messages:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
このため明白な問題を回避するには、ドメインの確認を無効にすることですが、私は、これは以下の
php -r "var_dump(openssl_get_cert_locations());"
array(8) {
["default_cert_file"]=>
string(36) "/usr/local/apps/etc/openssl/cert.pem"
["default_cert_file_env"]=>
string(13) "SSL_CERT_FILE"
["default_cert_dir"]=>
string(33) "/usr/local/apps/etc/openssl/certs"
["default_cert_dir_env"]=>
string(12) "SSL_CERT_DIR"
["default_private_dir"]=>
string(35) "/usr/local/apps/etc/openssl/private"
["default_default_cert_area"]=>
string(27) "/usr/local/apps/etc/openssl"
["ini_cafile"]=>
string(0) ""
["ini_capath"]=>
string(0) ""
}
の
出力をどのように動作するかを知ってほしいと私は同じことを行うことを望んでいませんよ
上記の場所にcert.pemがありますが、私の証明書と秘密鍵は、/etc/sslにあります。、私はそれらのフォルダにSysmlinkを作成しようとしましたが、まだ検証は失敗します。
ドメイン検証を無効にするという解決策のほとんどが問題を抱えているにもかかわらず、同じことがわからなくても、どのように検証が機能するのか誰でも説明できます。
証明書に関連するすべての適切なファイルがあり、私のウェブサイトで使用しているので、有効な証明書であるため、何か不足しています。ここで
はphpmailerののコード
require 'PHPMailer-master/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 5;
$mail->Debugoutput = 'html';
$mail->Host = 'mydomin.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "[email protected]";
$mail->Password = "test";
$mail->setFrom('[email protected]', 'Hii');
$mail->addAddress('[email protected]', 'John Doe');
$mail->Subject = 'PHPMailer GMail SMTP test';
$mail->msgHTML("<h2>Hello World</h2>");
$mail->AltBody = 'This is a plain-text message body';
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => true,
'verify_peer_name' => true,
)
);
if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
確かにあなたは確かに**検証を無効にしてはいけませんが、あなたは少し混乱しています。独自の* mail *サーバーを使用している場合、Webサーバーと同じ証明書を使用するようにアクセスし、構成する必要があります.PHPの設定とは何の関係もありません。 'SMTPDebug = 3'を設定することをお勧めします。これはこれをデバッグするのに十分で、4+よりもノイズが少なく、PHPMailerのトラブルシューティングガイドで説明されているようにopensslを使って正しく設定されているかチェックできます。 – Synchro
私は** Exim **に証明書を使用するように設定しているので、なぜ問題が発生するのか分からないようです。私はまた、コマンドラインを使用してチェックアウトし、out putは有効な証明書を表示します – Sachin
opensslでチェックしてください。ほとんどの場合、名前の不一致または不明なCAのいずれかです。私はドメインを知らずにそれをチェックすることはできません。 – Synchro