Postfix

Postfix/Dovecot 和新密碼保護的私鑰

  • January 10, 2019

正如 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=<20161025164917.93088330D956@mydomain.com>
Oct 25 18:49:17 ns postfix/smtpd[30437]: disconnect from www4.checktls.com[216.68.85.112]

那麼,如何讓 Postfix 和 Dovecot 知道密碼,刪除密碼,還是必須重新更新證書?

我更喜歡第一個問題的解決方案(讓他們知道密碼),因為這對我來說是一個新情況,所以我學到了一些東西(也許我需要將該密鑰的密碼“註冊”到系統的某個密碼池? )

配置 Dovecot

您可以將 Dovecot 配置為在啟動時使用密碼解鎖密鑰。SSL 配置 Wiki 頁面有一個部分

SSL 密鑰文件可能受密碼保護。有兩種方法可以為 Dovecot 提供密碼:

  1. 啟動 Dovecotdovecot -p會詢問密碼。它沒有儲存在任何地方,因此這種方法可以防止 Dovecot 在啟動時自動啟動。
  2. ssl_key_password環境。請注意,dovecot.conf預設情況下它是世界可讀的,因此您可能不應該直接將它放在那裡。相反,您可以將其儲存在不同的文件中,例如 /etc/dovecot-private.conf包含:

ssl_key_password = secret

然後!include_try /etc/dovecot-private.conf在 main 中使用dovecot.conf

Postfix 需要一個未加密的密鑰

Postfix 無法處理加密密鑰,因此您必須提供解密後的副本:

為了使用 TLS,Postfix SMTP 伺服器通常需要證書和私鑰。兩者都必須是“PEM”格式。私鑰不得加密,這意味著:密鑰必須無需密碼即可訪問。

$$ … $$

刪除密碼

刪除密碼也很容易通過執行來實現

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

再次導出密鑰時無需輸入新密碼。

引用自:https://serverfault.com/questions/811229