На своем сервере я установил Postfix, Dovecot и Apache2 на Ubuntu.
Я купил сертификат 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.
Мои конфиги верны?
Это проблема с цепочка сертификатов отправлено с сертификатом. Вы можете использовать один и тот же сертификат с 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
Это также должно показать промежуточные сертификаты, полная цепочка до корневого ЦС:
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 должен находиться в GlobalSign_Root_CA.pem
. Проверить серийник можно:
/etc/ssl/certs$ openssl x509 -in GlobalSign_Root_CA.pem -serial -noout
serial=040000000001154B5AC394
Все сертификаты должны быть в формате ASCII armored PEM, а загруженный gsalphasha2g2r1.crt
в настоящее время находится в двоичном формате с кодировкой DER. Вам нужно преобразовать его, используя:
openssl x509 -inform DER -in gsalphasha2g2r1.crt -out gsalphasha2g2r1.pem
Объедините сертификаты, как описано в Readme для Postfix TLS. Порядок такой же для Dovecot.
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
SSLCertificateChainFile /etc/ssl/certs/gsalphasha2g2r1.crt