web-dev-qa-db-ja.com

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
6
Martin Vegter

必要なのはチェーン証明書です。次のように作成できます。

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に接続すると、エラーは発生しません(他のすべてが正しく設定されている場合)。

14
user1968963

通常、サーバーは要求側のクライアントにサーバー証明書とすべての中間証明機関の証明書を提供するため、クライアントはチェーンの最上位の証明書を自分の信頼された(ルート)証明書の1つと照合できます。 Apache、dovecot、postfixについても同様です。 Dovecotにはトラストチェーンの設定がないようです。この場合、トラストチェーンはサーバー証明書とマージされ、ポイントされる必要があります。

ssl_cert = </etc/ssl/server-plus-chain.pem

証明書の順序は

  1. サーバー証明書
  2. 中間証明書

最後の中間証明書は、クライアントが利用できる信頼されたルート証明書によって発行されます。

3

アプリケーションがSSLサーバーとして機能する場合は、証明書とキーが必要です。証明書はクライアントに提示されるものです。アプリケーションがSSLクライアントとして機能し、サーバーから提示された証明書を検証する必要がある場合は、信頼できるCAのリストが必要です。

Postfixはサーバー(メールを受け入れる)とクライアント(メールを別のメールサーバーに配信する)の両方として機能しますが、dovecotはサーバーにすぎないため、信頼できるCAのリストは必要ありません。

1
Steffen Ullrich

複数のファイルがある場合のCA証明書は、以下を解決することが可能です

ssl_verify_client_cert = yes
ssl_ca = </etc/ssl/myssl/startssl.pem 
ssl_ca = </etc/ssl/myssl/sub.class2.server.ca.pem
0