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