web-dev-qa-db-ja.com

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サーバーにメールを送信できるようにするにはどうすればよいですか?

8
Tometzky

これは、CentOS 6のopensslへの最近の更新後、openssl-1.0.1e-30.el6.11.x86_64で、このライブラリを使用するプログラムが Logjam 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を使用します。

10
Tometzky

はい、動作します:-)

私のエラーは少し異なっていましたが、解決策は同じです:

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はメールの送信を再開します:-)

0
zipp