在我的服务器上,我在 Ubuntu 上安装了 Postfix、Dovecot 和 Apache2。
我购买了 SSL 证书并用它来保护网站。一切正常。
现在我想用相同的证书配置 Postfix 和 Dovecot,这样我也可以使用 SSL 来使用我的邮件服务器。但是当我在手机上的 gmail 应用程序上进行设置时,我得到了以下信息:
Certificate not trusted
Subject: kanzan.se
Issuer: AlphaSSL CA - SHA256 - G2
Valid from: Jul 3, 2018
Expires on: Jul 4, 2019
Current date: Jul 6, 2018
PEM encoded chain: -----BEGIN CERTIFICATE-----
MIIFzTCCBLWgAwIBAgIMdmzZXlCIkPQV/MbvMA0GCSqGSIb3DQEBCwUAMEwxCzAJBgN...
这是我的配置:
/etc/postfix/main.cf:
smtpd_tls_cert_file=/etc/ssl/certs/kanzan_cert_comb.crt
smtpd_tls_key_file=/etc/ssl/private/kanzan_ssl.key
smtpd_use_tls=yes
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sender_login_maps = hash:/etc/postfix/controlled_envelope_senders
smtpd_recipient_restrictions = permit_sasl_authenticated
#reject_sender_login_mismatch
/etc/dovecot/conf.d/10-ssl.conf:
ssl = yes
ssl_cert = </etc/ssl/certs/kanzan_cert_comb.crt
ssl_key = </etc/ssl/private/kanzan_ssl.key
/etc/postfix/master.cf:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=may
-o smtpd_sasl_auth_enable=yes
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
首先,我可以将同一个证书用于邮件和网站吗?(同一个域名)。我向 DNS 添加了一条 MX 记录,该记录指向此域名 kanzan.se。
我的配置正确吗?
答案1
这是一个问题证书链证书随附。您可以将同一个证书用于 Apache2、Postfix 和 Dovecot。但是,中间证书的配置有所不同:Apache 有一个单独的SSLCertificateChainFile
指令,而 Postfix 和 Dovecot 要求中间证书位于同一个文件中 ( smtpd_tls_cert_file
/ ssl_cert
)。
使用 测试您当前的配置openssl s_client -debug -connect
,kanzan.se:465
对于 SMTPS 和kanzan.se:443
HTTPS 都只显示一个证书。
Certificate chain
0 s:/OU=Domain Control Validated/CN=kanzan.se
i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
这也应该显示中间证书,到根 CA 的完整链是:
Certificate chain
0 s:/OU=Domain Control Validated/CN=kanzan.se
i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
1 s:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
2 s:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
要为 Postfix 和 Dovecot (以及 Apache) 设置此功能:
您可以从 GlobalSign 获取中级证书AlphaSSL 中级证书. 您需要一个带序列号的
040000000001444ef03631
。/etc/ssl/certs# wget https://secure.globalsign.com/cacert/gsalphasha2g2r1.crt
GlobalSign Root CA 应该在
GlobalSign_Root_CA.pem
。您可以检查序列号:/etc/ssl/certs$ openssl x509 -in GlobalSign_Root_CA.pem -serial -noout serial=040000000001154B5AC394
所有证书都需要采用 ASCII 装甲 PEM 格式,而下载的证书
gsalphasha2g2r1.crt
目前采用 DER 编码二进制格式。您需要使用以下命令进行转换:openssl x509 -inform DER -in gsalphasha2g2r1.crt -out gsalphasha2g2r1.pem
按照说明合并证书Postfix TLS 自述文件. 顺序相同多夫科特。
cat kanzan_cert_comb.crt gsalphasha2g2r1.pem GlobalSign_Root_CA.pem > postfix.crt
使用这些证书:
- 后缀:
smtpd_tls_cert_file=/etc/ssl/certs/postfix.crt
- 多切沃特:
ssl_cert = </etc/ssl/certs/postfix.crt
- Apache,添加:
SSLCertificateChainFile /etc/ssl/certs/gsalphasha2g2r1.crt
- 后缀: