Ssl
在 Dovecot 中指定 CA 證書
在 Postfix 中,我指定了我的私鑰、我的證書和我的 CA 的證書
smtpd_tls_CAfile = /etc/ssl/cacert.pem smtpd_tls_key_file = /etc/ssl/server.key smtpd_tls_cert_file = /etc/ssl/server.pem
在 dovecot 中,只有指定我的密鑰和證書的選項:
ssl_cert = </etc/ssl/server.pem ssl_key = </etc/ssl/server.key
如何指定我的 CA 的證書?
更新:
問題是,當我將客戶端連接到我的埠 993 時,出現證書錯誤。使用
openssl s_client -connect server:993
我得到這個錯誤:verify return:1 verify error:num=27:certificate not trusted verify return:1 verify error:num=21:unable to verify the first certificate verify return:1
當我連接到埠 465(Postfix)時,我沒有收到此錯誤:
openssl s_client -connect server:465
您需要的是鏈證書。您可以像這樣創建一個:
cat /etc/ssl/server.pem /etc/ssl/cacert.pem > /etc/ssl/chain.pem
然後使用鏈作為伺服器證書
ssl_cert = </etc/ssl/chain.pem ssl_key = </etc/ssl/server.key
現在,當您連接時
openssl s_client
,您應該不會收到任何錯誤(前提是其他所有設置都正確)
通常,伺服器向請求客戶端提供伺服器證書以及所有中間證書頒發機構證書,以便客戶端可以將鏈的頂部證書與其受信任的(根)證書之一匹配。這對於 apache、dovecot 和 postfix 來說是正確的。Dovecot 似乎沒有信任鏈的設置,所以在這種情況下,信任鏈必須與伺服器證書合併並被指向。
ssl_cert = </etc/ssl/server-plus-chain.pem
證書的順序是
- 伺服器證書
- 中介證書
最後一個中間證書由客戶端可用的可信根證書頒發。