我的邮件服务器运行 postfix/dovecot 设置时出现问题,基本上当我运行各种安全测试时,我被告知无法验证我的证书,请参见此处:https://ssl-tools.net/mailservers/brailsford.xyz
我所拥有的证书和相关文件(有效期按照https://brailsford.xyz) 是:
- 添加信任外部CARoot.crt
- brailsford_xyz.crt
- COMODORSAAddTrustCA.crt
- COMODORSADomainValidationSecureServerCA.crt
我还有 crt 的密钥文件 brailsford_xyz.key
我在 postfix 中的设置是:
smtpd_tls_cert_file=/etc/ssl/certs/postfixchain.crt
smtpd_tls_key_file=/etc/ssl/private/brailsford.key
smtpd_tls_CAfile=/etc/ssl/certs/COMODORSADomainValidationSecureServerCA.crt
smtpd_use_tls=yes
后缀链是之前的三个证书的组合,顺序如下:
- brailsford_xyz.crt
- COMODORSADomainValidationSecureServerCA.crt
- 添加信任外部CARoot.crt
有人能告诉我我做错了什么以及如何改正吗?
答案1
您的 SSL 证书链似乎不完整(或者缺少链接)。看看openssl s_client
当我连接到您的邮件服务器时返回的内容:
$ openssl s_client -CAfile /etc/ssl/certs/ca-certificates.crt -starttls smtp -connect brailsford.xyz:587
CONNECTED(00000003)
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:/OU=Domain Control Validated/OU=PositiveSSL/CN=brailsford.xyz
i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
1 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
2 s:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
---
如您所见,有一个颁发者 ( i
) 为“/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority”的证书,但该链不包含由受信任的 CA(或进一步的中间 CA)颁发给该主题的证书。
据我所知,您至少缺少这个证书(作为您链中的第三个链接):https://support.comodo.com/index.php?/Default/Knowledgebase/Article/View/966/108/intermediate-1-sha-2-comodo-rsa-certification-authority
即序列号 27:66:ee:56:eb:49:f3:8e:ab:d7:70:a2:fc:84:de:22 和Subject: C=GB, ST=Greater Manchester, L=Salford, O=COMODO CA Limited, CN=COMODO RSA Certification Authority
答案2
您的指令:
smtpd_tls_CAfile=/etc/ssl/certs/COMODORSADomainValidationSecureServerCA.crt
很奇怪。您可能根本不想指定它 - 如果您使用客户端证书身份验证,它是为颁发客户端证书的 CA 准备的。它不适用于您的链。
通常,只需将您的证书后面跟上其每个中间 CA 证书(PEM 格式),然后将其串联在一起即可smtpd_tls_cert_file
。无需指定根。仔细检查您在此处使用的证书是否正确。
ssl-tools.net 给出的错误有点难以理解。考虑使用 openssl s_client 检查问题。