有时我会看到类似这样的 Postfix 日志:
Mar 18 13:19:19 ... smtpd[1217240]: SSL_accept error from mx0b-002b8002.pphosted.com[148.163.140.242]: -1
Mar 18 13:19:19 ... smtpd[1217240]: warning: TLS library problem: error:0A0000C1:SSL routines::no shared cipher:../ssl/statem/statem_srvr.c:2220:
我确实阻止了古老的密码:
smtpd_tls_mandatory_ciphers = high
smtpd_tls_mandatory_exclude_ciphers = ECDHE-RSA-RC4-SHA
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = >=TLSv1
所以现在我想看看客户端在尝试连接到我的服务器时提供了哪些密码,但我在日志中看不到。有没有办法获取此信息?
调试提供的密码套件
您可以按照Postfix 调试方法
debug_peer_list
中的建议将客户端的 IP 地址添加到。默认
debug_peer_level = 2
日志:因为您想要查看客户端提供的密码,所以您需要将调试级别增加一级。
这将输出如下内容:
还有什么问题?证书不兼容!
也
error:0A0000C1:SSL routines::no shared cipher
可能是由于证书类型不同造成的。在这种情况下,您会看到列表中有常见的密码套件,但它们未被使用。例如,您的服务器可能只有 ECC 证书可用,而客户端仅支持 RSA 证书。这将导致您遇到的确切错误,并且您的调试尝试将非常令人困惑,显示如下内容:
自从 Let's Encrypt 开始默认颁发 ECC 证书后,这种情况就经常发生: