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サーバーにメールを送信できるようにするにはどうすればよいですか?
これは、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
を使用します。
はい、動作します:-)
私のエラーは少し異なっていましたが、解決策は同じです:
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はメールの送信を再開します:-)