在 Dovecot 中指定 CA 证书

Mar*_*ter 6 ssl certificates tls dovecot

在 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
Run Code Online (Sandbox Code Playgroud)

在 dovecot 中,只有指定我的密钥和我的证书的选项:

ssl_cert = </etc/ssl/server.pem
ssl_key = </etc/ssl/server.key
Run Code Online (Sandbox Code Playgroud)

如何指定我的 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
Run Code Online (Sandbox Code Playgroud)

当我连接到端口 465 (Postfix) 时,我没有收到此错误:

openssl s_client -connect server:465
Run Code Online (Sandbox Code Playgroud)

use*_*963 14

您需要的是连锁证书。你可以像这样创建一个:

cat /etc/ssl/server.pem /etc/ssl/cacert.pem > /etc/ssl/chain.pem
Run Code Online (Sandbox Code Playgroud)

然后使用链作为服务器证书

ssl_cert = </etc/ssl/chain.pem
ssl_key = </etc/ssl/server.key
Run Code Online (Sandbox Code Playgroud)

现在,当您与 连接时openssl s_client,您应该不会收到任何错误(前提是其他所有设置都正确)

  • 如果使用 let's encrypt 证书的人有任何更改,则 `ssl_cert` 应该是默认创建的文件 `fullchain.pem`。`ssl_key` 应该是 `privkey.pem`。 (3认同)
  • 但是对于后缀,它应该是:`smtpd_tls_key_file = privkey.pem`、`smtpd_tls_cert_file = cert.pem`、`smtpd_tls_CAfile = chain.pem`。 (3认同)