Предупреждение PHP: stream_socket_enable_crypto(): операция SSL завершилась неудачно с кодом 1

Вопрос: При попытке настроить и отправить почту с помощью PHPMailer появляется следующее предупреждение: PHP Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed Я рассмотрел другие решения, и никто из них не работает. Вот некоторые подробности: Мой сертификат (из letencrypt) действителен, по крайней мере, в моей конфигурации Nginx. Мой

Вопрос:

При попытке настроить и отправить почту с помощью PHPMailer появляется следующее предупреждение:

PHP Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed

Я рассмотрел другие решения, и никто из них не работает. Вот некоторые подробности:

  1. Мой сертификат (из letencrypt) действителен, по крайней мере, в моей конфигурации Nginx. Мой сайт WordPress безопасно работает без ошибок. Моя версия PHP – 7.0.xx

  2. Я попытался добавить расположение файла сертификата в php.ini, но он предупреждает об ошибке загрузки потока, хотя адрес правильный. Вот что я пробовал (среди прочего):

    openssl.capath = «/etc/letsencrypt/live/example.org/» Это приводит к той же ошибке, что и выше.

    Я также попытался: openssl.cafile = «/etc/letsencrypt/live/example.org/fullchain.pem» но получить предупреждение: PHP Warning:failed loading cafile stream

Моя конфигурация почтовой программы PHP (которая находится внутри моего файла функций wordpress) выглядит следующим образом:

$phpmailer->Host = ‘mail.example.org’; $phpmailer->SMTPAuth = true; $phpmailer->Port = 587; $phpmailer->Username = ‘myadminaccount@example.org’; $phpmailer->Password = ‘mypassword’; $phpmailer->SMTPSecure = «tls»; $phpmailer->From = «myadminaccount@example.org»; $phpmailer->FromName = «MY Admin Account»;

Как я уже сказал, я пробовал различные решения в другом месте на сайте, и никто из них не работает. И я сбив с толку, потому что мой локальный сертификат (и сертификат почтового сервера в этом отношении) являются действительными.

Я действительно не хочу отключать проверку сверстников, как это было предложено в другом месте, но если я должен догадаться, я это сделаю.

Лучший ответ:

UGH решение было довольно простым, и вне того, что я написал выше. Я использовал ключ для проверки, чтобы убедиться, что мой сервер прав, например:

switch ($_SERVER[‘HTTP_HOST’]) { case ‘https://example1.org’: // Set the hostname of the mail server $phpmailer->Host = ‘mail.example1.org’;

И мне нужно было отказаться от https. Так что измените его на:

switch ($_SERVER[‘HTTP_HOST’]) { case ‘example1.org’: // Set the hostname of the mail server $phpmailer->Host = ‘mail.example1.org’;

заработает! Я чувствую себя болваном, но я надеюсь, что это поможет кому-то другому.

Оцените статью
Добавить комментарий