Postfix/Dovecot 和新的密码保护私钥

Postfix/Dovecot 和新的密码保护私钥

正如 StartSSL 所述,我已经为我的 postfix/dovecot Ubuntu 14.04 服务器创建了 CST 和私钥对,其内容如下:

openssl req -newkey rsa:2048 -keyout mydomain.key -out mydomain.csr

在密码提示中,我输入了(为什么不呢,对吧?)一个密码,而不是将密码留空以获得不受保护的密钥。

将文件粘贴到 StartSSL 后csr,我收到了与受密码保护的文件相关联的相应证书。

我让 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 知道密码、删除密码,或者我是否必须重新更新证书?

我更喜欢第一个问题的解决方案(让他们知道密码),因为这对我来说是一个新的情况,所以我学到了一些东西(也许我需要将该密钥的密码“注册”到系统的某个密码池中?)

答案1

配置 Dovecot

您可以配置 Dovecot 在启动时使用密码解锁密钥。SSL 配置 Wiki 页面有一个关于此的部分

SSL 密钥文件可能受密码保护。有两种方法可以向 Dovecot 提供密码:

  1. 启动 Dovecot 时dovecot -p会询问密码。密码不存储在任何地方,因此此方法可防止 Dovecot 在启动时自动启动。

  2. ssl_key_password设置。请注意,dovecot.conf默认情况下是世界可读的,因此您可能不应该将其直接放在那里。相反,您可以将其存储在不同的文件中,例如 /etc/dovecot-private.conf包含:

    ssl_key_password = secret

    然后!include_try /etc/dovecot-private.conf在主函数中使用dovecot.conf

Postfix 需要未加密的密钥

Postfix 无法处理加密密钥,因此你必须提供解密的副本:

为了使用 TLS,Postfix SMTP 服务器通常需要证书和私钥。两者都必须采用“PEM”格式。私钥不得加密,这意味着:密钥必须无需密码即可访问。[...]

删除密码

删除密码也很容易,只需运行

openssl rsa -in encrypted-key.pem -out decrypted-key.pem

再次导出密钥时无需输入新密码。

答案2

您还可以使用 openssl 立即创建未加密的密钥。要获取密钥、csr 和 crt 文件,命令如下

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out server.key
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

相关内容