正如 StartSSL 所说,我为我的 postfix/dovecot Ubuntu 14.04 服务器创建了一个 CST 和私钥对,其中:
openssl req -newkey rsa:2048 -keyout mydomain.key -out mydomain.csr
在密码短语提示中,我介绍了(为什么不,对吗?)密码,而不是将密码留空以获得不受保护的密钥。
将文件粘贴csr
到 StartSSL 后,我收到了与密码保护文件关联的相应证书。
我有使用该证书的 Dovecot 和 Postfix:
// /etc/postfix/main.cf
smtpd_tls_cert_file = /etc/ssl/private/mychain.pem
smtpd_tls_key_file = /etc/ssl/private/mydomain.key
smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
// /etc/dovecot/conf.d/10-ssl.conf
ssl_cert = </etc/ssl/private/mychain.pem
ssl_key = </etc/ssl/private/mydomain.key
使用 进行测试时checktls.com
,我收到:
// other steps omited
749.-->STARTTLS\r\n
750.<--454 4.7.0 TLS not available due to local problem\r\n
在我的系统日志中,SMTP 错误以及一个dovecot
错误,幸运的是,发生在那个时刻(我猜我的一些客户当时正试图连接):
Oct 25 18:49:12 ns dovecot: pop3-login: Error: SSL private key file is password protected, but password isn't given
Oct 25 18:49:12 ns dovecot: pop3-login: Fatal: Couldn't parse private ssl_key: error:0907B068:PEM routines:PEM_READ_BIO_PRIVATEKEY:bad password read
Oct 25 18:49:12 ns dovecot: master: Error: service(pop3-login): command startup failed, throttling for 60 secs
Oct 25 18:49:16 ns postfix/smtpd[30437]: connect from www4.checktls.com[216.68.85.112]
Oct 25 18:49:17 ns postfix/smtpd[30437]: lost connection after UNKNOWN from www4.checktls.com[216.68.85.112]
Oct 25 18:49:17 ns postfix/cleanup[30461]: 93088330D956: message-id=<[email protected]>
Oct 25 18:49:17 ns postfix/smtpd[30437]: disconnect from www4.checktls.com[216.68.85.112]
那么,如何让 Postfix 和 Dovecot 知道密码,删除密码,还是必须重新更新证书?
我更喜欢第一个问题的解决方案(让他们知道密码),因为这对我来说是一个新情况,所以我学到了一些东西(也许我需要将该密钥的密码“注册”到系统的某个密码池? )
配置 Dovecot
您可以将 Dovecot 配置为在启动时使用密码解锁密钥。SSL 配置 Wiki 页面有一个部分:
Postfix 需要一个未加密的密钥
Postfix 无法处理加密密钥,因此您必须提供解密后的副本:
删除密码
删除密码也很容易通过运行来实现
再次导出密钥时无需输入新密码。
您还可以使用 openssl 立即创建未加密的密钥。要获取密钥、csr 和 crt 文件,命令将是