Ssl

在 Dovecot 中指定 CA 證書

  • February 6, 2016

在 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

證書的順序是

  1. 伺服器證書
  2. 中介證書

最後一個中間證書由客戶端可用的可信根證書頒發。

引用自:https://unix.stackexchange.com/questions/146415