sendmail がハンドシェイク失敗により一部の接続を拒否: SSL アラート番号 40

sendmail がハンドシェイク失敗により一部の接続を拒否: SSL アラート番号 40

CentOS 5 上の sendmail サーバーが、次のメッセージを記録して一部の接続を拒否し始めました。

error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1092:SSL alert number 40

CentOS 6 サーバーから openssl を使用して接続しようとすると、次のエラーが発生します。

$ 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

これは、CentOS 6のopensslの最近のアップデート後openssl-1.0.1e-30.el6.11.x86_64、このライブラリを使用するプログラムが、脆弱性のあるサーバーへの接続を拒否し始めたためです。ログジャムTLS の脆弱性。

より強力な一時 Diffie-Hellman キー (少なくとも 1024 ビット) を使用するように sendmail を設定する必要があります。これは 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 は再びメールの送信を開始します:-)

関連情報