Мой сервер sendmail на CentOS 5 начал отклонять некоторые соединения, выдавая следующее сообщение:
error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1092:SSL alert number 40
При попытке подключиться к нему с помощью openssl с сервера CentOS 6 возникает следующая ошибка:
$ openssl s_client -starttls smtp -crlf -connect hostname.example.net:smtp
(...)
error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small:s3_clnt.c:3331
(...)
Server Temp Key: DH, 512 bits
(...)
Почта на сервере CentOS 6 временно отклоняется с ошибкой Deferred: 403 4.7.0 TLS handshake failed
.
Что сделать, чтобы иметь возможность отправлять почту с CentOS 6 / RHEL 6 на сервер CentOS6 / RHEL5?
решение1
Это связано с тем, что после недавнего обновления openssl на CentOS 6 openssl-1.0.1e-30.el6.11.x86_64
программы, использующие эту библиотеку, начали отказываться подключаться к серверам, уязвимым дляЗаторУязвимость TLS.
Вам необходимо настроить sendmail на использование более сильного временного ключа Диффи–Хеллмана — не менее 1024 бит. Это не тот же ключ, который вы используете в своем сертификате TLS, поэтому если ваш сертификат использует ключ длиной 2048 бит, вы все равно можете быть уязвимы.
Создайте файл параметров DH на вашем сервере:
openssl dhparam -out /etc/pki/tls/certs/dhparams.pem 1024
Настройте sendmail на использование этого файла параметров и только надежных шифров. Добавить в /etc/mail/sendmail.mc
:
LOCAL_CONFIG
O CipherList=HIGH:!ADH
O DHParameters=/etc/pki/tls/certs/dhparams.pem
O ServerSSLOptions=+SSL_OP_NO_SSLv2 +SSL_OP_NO_SSLv3 +SSL_OP_CIPHER_SERVER_PREFERENCE
O ClientSSLOptions=+SSL_OP_NO_SSLv2 +SSL_OP_NO_SSLv3
Затем используйте make -C /etc/mail/
и service sendmail restart
.
решение2
Да, это работает:-)
Моя ошибка была немного иной, но решение то же самое:
SSL routines:SSL3_READ_BYTES:sslv3 alert illegal parameter:s3_pkt.c:1060:SSL alert number 47
Я генерирую временный ключ сервера: файл DH (в моей конфигурации его нет, по умолчанию 512 бит)
openssl dhparam -out /etc/mail/certs/dhparams.pem 2048
(это займет очень, очень много времени;-)
и я вставляю строку в sendmail.cf
O DHParameters=/etc/mail/certs/dhparams.pem
После перезапуска мой sendmail снова начинает отправлять письма:-)