Dovecot 无法初始化 SSL 服务器上下文

Dovecot 无法初始化 SSL 服务器上下文

我正在尝试为 Dovecot 2.3 配置 TLS,但是在完成所有设置后,我无法启动 Dovecot:

Apr 16 20:56:02 master: Info: Dovecot v2.3.9.3 (9f41b88fa) starting up for imap, pop3, lmtp (core dumps disabled)
Apr 16 20:56:25 auth: Debug: Loading modules from directory: /usr/lib/dovecot/auth
Apr 16 20:56:25 auth: Debug: Module loaded: /usr/lib/dovecot/auth/lib20_auth_var_expand_crypt.so
Apr 16 20:56:25 auth: Debug: Read auth token secret from /usr/var/run/dovecot/auth-token-secret.dat
Apr 16 20:56:25 auth: Debug: auth client connected (pid=30750)
Apr 16 20:56:25 imap-login: Error: Failed to initialize SSL server context: Can't load SSL private key: Key is for a different cert than ssl_cert: user=<>, rip=::1, lip=::1, secured, session=<JKh/qm6j/rMAAAAAAAAAAAAAAAAAAAAB>
Apr 16 20:56:25 imap-login: Info: Disconnected: TLS initialization failed. (no auth attempts in 0 secs): user=<>, rip=::1, lip=::1, secured, session=<JKh/qm6j/rMAAAAAAAAAAAAAAAAAAAAB>
Apr 16 20:57:47 master: Fatal: Dovecot is already running with PID 30727 (read from /usr/var/run/dovecot/master.pid)
Apr 16 20:57:47 master: Warning: Killed with signal 15 (by pid=30823 uid=0 code=kill)

我已经创建了一个全新的密钥对、csr 和证书,但它仍然无法启动。

对此有什么想法吗?

答案1

答案是您的 dh.pem 文件没有足够的位数。使用以下命令生成您自己的 dh.pem 文件:

openssl dhparam -out /etc/dovecot/dh.pem 4096

然后添加/取消注释该行:

ssl_dh=</usr/share/dovecot/dh.pem

到/在 => /etc/dovecot/conf.d/10-ssl.conf

答案2

“无法加载 SSL 私钥:密钥与 ssl_cert 的证书不同:”

用于doveconf -n -P输出您正在运行的实际 dovecot 配置。

寻找类似的东西:

ssl_cert = </etc/dovecot/ssl.pem ssl_key = </etc/dovecot/ssl.pem

您可能需要做类似的事情:

openssl x509 -in /path/to/ssl.pem -noout -text

在两个证书文件上确认 ssl_key 文件与 ssl_cert 文件不匹配。

答案3

我无法评论,因为我是新手,但至少你的问题的一部分是密钥对,即使你已经创建了新的密钥对。你从哪里得到你的密钥和证书。考虑使用 letsencrypt 和 certbot。Certbot 会将证书私钥和证书文件放入(Linux 上的 /etc/letsencrypt/live)。然后在你的 dovecot.conf 中将 ssl_cert、ssl_key 和 ssl_ca 设置为正确的位置并重新启动 doveot。不要重新加载,已知 pid 错误存在问题。停止 dovecot 并重新启动。

相关内容