我的exim服务器被configuration为在连接时要求客户端证书。 我build立了一个ACL(在rcpt阶段)来logging或添加一个头信息。 证书检查的结果:
warn encrypted = * ! verify = certificate #condition = ${if def:tls_in_peerdn {yes}{no}} # -> newer versions of exim use $tls_in_peerdn! condition = ${if def:tls_peerdn {yes}{no}} add_header = X-TLS-Client-Certificate: invalid (${tls_peerdn}) log_message = Invalid TLS client certificate presented (${tls_peerdn}). warn encrypted = * ! verify = certificate condition = ${if def:tls_peerdn {no}{yes}} log_message = No TLS client certificate presented. warn verify = certificate add_header = X-TLS-Client-Certificate: valid condition = false
不幸的是我没有看到任何消息被检查为有效。 虽然检查没有证书工程。
我成立了
tls_try_verify_hosts = *
因此,检查发生和(使用Debian,它被包括在标准configuration中)信任锚configuration和访问:
tls_verify_certificates = /etc/ssl/certs/ca-certificates.crt
testing…
openssl s_client -CAfile /etc/ssl/certs/ca-certificates.crt -verify 4 -connect mailserver.dom.tld:25 -starttls smtp -cert /etc/ssl/letsencrypt/fullchain.pem -key /etc/ssl/letsencrypt/privkey.pem
…使用与服务器使用相同的密钥从服务器到自身,包括正确顺序的中间证书不会提供有效的检查结果。
我错过了什么?
如果您的服务器使用默认configuration,则应使用snakeoil自签名证书。 在传出和传入连接上build立TLS连接是足够的和可接受的。 然而,它会validation失败。 您将需要使用来自可信机构的证书来通过validation。
您是否向客户提供可用于login的证书? 除了您的用户提供的用户证书,我希望客户端证书经常失败。 许多服务器使用自签名证书,或者有其他问题导致validation失败。
除非设置了tls_verify_hosts或tls_try_verify_hosts否则Exim不会要求客户端证书。 Exim文档的“ encryption的SMTP连接”部分详细介绍了证书。
许多组织在为STMP使用正确configurationDNS时遇到困难。 DKIM特别麻烦,我遇到的大多数签名者都会失败。 我很less希望很多网站都使用正确的有效证书来configuration他们的服务器。
在最近限制连接到TLS v1.0和更高版本之后,我不得不停止向多个服务器通告STARTTLS 。 我还没有采取措施来validation任何客户的TLS证书。 如果我曾经这样做过,那么最多只能算上他们的垃圾邮件分数。 我可以启用tls_peerdn日志select器来调查是否有任何网站可以通过validation。
TLS上的SMTP越来越多,但远非标准。 那些使用它的网站是被其他方式信任的网站。
更新:我检查了我的日志,到目前为止只有两个发件人已通过validation。 大多数客户没有validation。
我试图validation我的证书:
openssl.client.net连接,不应该通过rDNS valiation。 我使用的testing命令是:
echo quit | openssl s_client -cert fullchain.pem -key privkey.pem \ -starttls smtp -connect mail.systemajik.com:587 -debug 2>&1 | less
参数-CAfile的值应该是你的让我们encryption的chain.pem和-cert cert.pem的值:
openssl s_client -CAfile /etc/ssl/letsencrypt/chain.pem -verify 4 \ -connect mailserver.dom.tld:25 -starttls smtp \ -cert /etc/ssl/letsencrypt/cert.pem \ -key /etc/ssl/letsencrypt/privkey.pem
像这样你的证书将被你的服务器validation。