Ssl
SSL 證書在 SNI 伺服器上無效 - Dovecot/Postfix
我在執行 Raspbian 10 (Buster) 的 Raspberry Pi 上執行了 Dovecot/Postfix 伺服器 我在同一台伺服器上執行了兩個域名,出於隱私考慮,我將其稱為 DOMAIN 1 和 DOMAIN 2。兩者都有關聯的電子郵件地址與他們一起,兩個域都可以正常發送和接收電子郵件。
但是,每當我嘗試使用 Outlook 檢查電子郵件時,都會收到 DOMAIN 2 的警告“您連接的伺服器正在使用無法驗證的安全證書。目標主體名稱不正確。” 但不適用於 DOMAIN 1。
當我“查看證書”時,證書聲稱它是頒發給 DOMAIN 1 的。
我在 Dovecot 和 Postfix 中使用 SNI 設置域,並將 DOMAIN 1 作為預設值,如下所示:
/etc/postfix/vmail_ssl.map mail.DOMAIN1.com /etc/letsencrypt/live/DOMAIN1.com/privkey.pem /etc/letsencrypt/live/DOMAIN1.com/fullchain.pem mail.DOMAIN2.com /etc/letsencrypt/live/DOMAIN2.com/privkey.pem /etc/letsencrypt/live/DOMAIN2.com/fullchain.pem /etc/dovecot/ssl-sni.conf local_name mail.DOMAIN1.com { ssl_cert = </etc/letsencrypt/live/DOMAIN1.com/fullchain.pem ssl_key = </etc/letsencrypt/live/DOMAIN1.com/privkey.pem } local_name mail.DOMAIN2.com { ssl_cert = </etc/letsencrypt/live/DOMAIN2.com/fullchain.pem ssl_key = </etc/letsencrypt/live/DOMAIN2.com/privkey.pem }
並在 Dovecot 的 SSL Conf 中如下所示
/etc/dovecot/conf.d/10-ssl.conf # SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt> ssl = yes # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before # dropping root privileges, so keep the key file unreadable by anyone but # root. Included doc/mkcert.sh can be used to easily generate self-signed # certificate, just make sure to update the domains in dovecot-openssl.cnf #ssl_cert = </etc/dovecot/private/dovecot.pem #ssl_key = </etc/dovecot/private/dovecot.key # default ssl_cert = </etc/letsencrypt/live/DOMAIN1.com/fullchain.pem ssl_key = </etc/letsencrypt/live/DOMAIN1.com/privkey.pem # DOMAIN2.com local_name mail.DOMAIN2.com { ssl_cert = </etc/letsencrypt/live/DOMAIN2.com/fullchain.pem ssl_key = </etc/letsencrypt/live/DOMAIN2.com/privkey.pem }
我在設置這些東西方面沒有大量經驗,但在我看來,Dovecot 在所有情況下都將 DOMAIN1 的 SSL 證書作為預設值,而不是在建立連接以檢查郵件時為 DOMAIN2 提供證書域…雖然我可能完全錯了…任何人都可以建議我做錯了什麼以及我需要做些什麼才能使 SNI 正常工作?我已經盡力了,但我的最好似乎還不夠好……
謝謝!
SNI 對於郵件仍然不常見。雖然像 dovecot 這樣的一些郵件伺服器支持它,但許多郵件客戶端不支持。但是客戶端沒有使用 SNI 會導致伺服器發送一些預設證書。因此,它適用於一個域(預設),但不適用於另一個域。