由于错误,我无法接收来自某些主机的电子邮件no shared cipher
:
postfix/smtpd[15934]: warning: TLS library problem: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher:s3_srvr.c:1440:
我正在使用此 Postfix 设置来接收电子邮件:
smtpd_tls_mandatory_ciphers = high
smtpd_tls_ciphers = high
查找tls_high_cipherlist
结果:
$ postconf -d | grep tls_high_cipherlist
tls_high_cipherlist = aNULL:-aNULL:ALL:!EXPORT:!LOW:!MEDIUM:+RC4:@STRENGTH
因此我查找了适用于 TLSv1.2 的密码
$ openssl ciphers -v 'aNULL:-aNULL:ALL:!EXPORT:!LOW:!MEDIUM:+RC4:@STRENGTH' | grep TLSv1.2
ADH-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=None Enc=AESGCM(256) Mac=AEAD
ADH-AES256-SHA256 TLSv1.2 Kx=DH Au=None Enc=AES(256) Mac=SHA256
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384
DHE-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256
DHE-DSS-AES256-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(256) Mac=SHA256
...
所以我认为这也应该是后缀用来接受的密码,但是使用测试sl.sh为了测试支持的密码,我得到了这个:
Hexcode Cipher Suite Name (OpenSSL) KeyExch. Encryption Bits Cipher Suite Name (RFC)
------------------------------------------------------------------------------------------------------
TLS 1.2
xc02c ECDHE-ECDSA-AES256-GCM-SHA384 ECDH 256 AESGCM 256 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
xc024 ECDHE-ECDSA-AES256-SHA384 ECDH 256 AES 256 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
xc00a ECDHE-ECDSA-AES256-SHA ECDH 256 AES 256 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
xc019 AECDH-AES256-SHA ECDH 256 AES 256 TLS_ECDH_anon_WITH_AES_256_CBC_SHA
xa7 ADH-AES256-GCM-SHA384 DH 4096 AESGCM 256 TLS_DH_anon_WITH_AES_256_GCM_SHA384
x6d ADH-AES256-SHA256 DH 4096 AES 256 TLS_DH_anon_WITH_AES_256_CBC_SHA256
x3a ADH-AES256-SHA DH 4096 AES 256 TLS_DH_anon_WITH_AES_256_CBC_SHA
x89 ADH-CAMELLIA256-SHA DH 4096 Camellia 256 TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA
xc02b ECDHE-ECDSA-AES128-GCM-SHA256 ECDH 256 AESGCM 128 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
xc023 ECDHE-ECDSA-AES128-SHA256 ECDH 256 AES 128 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
xc009 ECDHE-ECDSA-AES128-SHA ECDH 256 AES 128 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
xc018 AECDH-AES128-SHA ECDH 256 AES 128 TLS_ECDH_anon_WITH_AES_128_CBC_SHA
xa6 ADH-AES128-GCM-SHA256 DH 4096 AESGCM 128 TLS_DH_anon_WITH_AES_128_GCM_SHA256
x6c ADH-AES128-SHA256 DH 4096 AES 128 TLS_DH_anon_WITH_AES_128_CBC_SHA256
x34 ADH-AES128-SHA DH 4096 AES 128 TLS_DH_anon_WITH_AES_128_CBC_SHA
x9b ADH-SEED-SHA DH 4096 SEED 128 TLS_DH_anon_WITH_SEED_CBC_SHA
x46 ADH-CAMELLIA128-SHA DH 4096 Camellia 128 TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA
xc007 ECDHE-ECDSA-RC4-SHA ECDH 256 RC4 128 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
xc016 AECDH-RC4-SHA ECDH 256 RC4 128 TLS_ECDH_anon_WITH_RC4_128_SHA
x18 ADH-RC4-MD5 DH 4096 RC4 128 TLS_DH_anon_WITH_RC4_128_MD5
xc008 ECDHE-ECDSA-DES-CBC3-SHA ECDH 256 3DES 168 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
xc017 AECDH-DES-CBC3-SHA ECDH 256 3DES 168 TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA
x1b ADH-DES-CBC3-SHA DH 4096 3DES 168 TLS_DH_anon_WITH_3DES_EDE_CBC_SHA
例如DHE-DSS-AES256-GCM-SHA384
缺失了。
我是否也必须在其他地方启用此密码?另外,明确设置tls_high_cipherlist
不会main.cf
改变结果。
答案1
smtpd_tls_security_level = may
smtp_tls_security_level = may
smtp_tls_loglevel = 1
# if you have authentication enabled, only offer it after STARTTLS
smtpd_tls_auth_only = yes
tls_ssl_options = NO_COMPRESSION
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_ciphers=high
tls_high_cipherlist=EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
默认情况下,强烈建议您不要更改设置
您可以在此处插入自己的密码套件,但我不建议这样做。bettercrypto 项目选择的密码字符串经过了广泛测试,在提供尽可能高的安全性的同时提供了尽可能高的兼容性。所有密码的顺序非常重要,因此服务器和客户端正在协商最佳密码,最好使用前向保密,这对于这个来说是正确的。
答案2
因此,问题出在 Postfix 2.11.x + Openssl 1.1.0 + “ECDSA P-384” 证书上。Postfix 中的 TLS 前向保密是说:
对于 3.2 版之前的 Postfix 或 1.0.2 版之前的 OpenSSL,只能配置一条服务器端曲线,方法是指定合适的 EECDH“等级”:
所以我需要设置secp384r1
。
但我仍然遇到了一些不匹配的情况。最后我颁发了 RSA 证书,现在大家都很高兴。(另请参阅https://github.com/openssl/openssl/issues/2033)
答案3
只是为了澄清(复制自http://www.postfix.org/FORWARD_SECRECY_README.html)您需要在main.cf中设置/添加参数,如下所述:
“对于 3.2 之前的 Postfix 或 1.0.2 之前的 OpenSSL,只能配置单个服务器端曲线,方法是指定合适的 EECDH“等级”:smtpd_tls_eecdh_grade = strong | ultra # 底层曲线,最好不要改变:# tls_eecdh_strong_curve = prime256v1 # tls_eecdh_ultra_curve = secp384r1“