OpenSSL: dh key too small

На новом сервере (Debian 10) с сайтом на Laravel возникла эта проблема. Ошибка появлялась в логах при отправке уведомлений по электронной почте. Отправка сообщений не работала.

Причина в том, что новый софт на сервере имеет более жесткие требования к безопасности, поэтому не хотел устанавливать соединение с mail-сервером, который был настроен сто лет назад.

stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small {"userId":1,"exception":"[object] (ErrorException(code: 0): stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small at /var/www/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php:94)

Для исправления правильнее всего обновить настройки mail-сервера. Пока это не будет сделано можно временно изменить конфиг OpenSSL у себя на сервере, файл /etc/ssl/openssl.cnf. Здесь по умолчанию:

[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=2

Измените на:

[system_default_sect]
MinProtocol = TLSv1.2
#CipherString = DEFAULT@SECLEVEL=2
CipherString = DEFAULT@SECLEVEL=1

Перезапустите php-fpm:

service php7.4-fpm reload
docker-compose restart php-fpm
..

2 комментария

За
Мне подсказали решение, но когда сдал гуглить, снова напал на Ваш сайт. Снова премного благодарен! Проблема не только с Laravel. Заработало с MinProtocol = TLSv1.2, на TLSv1 не менял.
Спасибо, действительно так, поправил в статье.