Ssl

Dovecot簽發的過期證書?

  • March 29, 2019

我已經執行了一段時間的 Postfix/Dovecot 郵件伺服器(Ubuntu 伺服器 16.04),沒有任何重大問題。我還有一個頒發給我的主機名的 Let’s Encrypt 證書,我在/etc/dovecot/conf.d/10-ssl.conf. 執行良好,但您可能知道這些僅在 90 天內有效。我有 certbot 設置來自動更新這些,這也很好。

突然,今天,我的 Thunderbird、客戶 Thunderbird 和他的 iPhone 都開始抱怨證書無效。我檢查了證書certbot certificates,發現我使用的證書完全有效,沒有過期。通過 Thunderbird 檢查證書告訴我證書在前一天過期,顯示的雜湊值與目前證書不匹配。

所以基本上,Dovecot 似乎正在從某種“記憶體”發出過期的證書。重新啟動 dovecot 只是“神奇地”修復了它,但我想了解這裡發生了什麼,因為我的 DDG 在 Dovecot 中搜尋證書記憶體或類似的東西並沒有給我任何結果。我在這裡遺漏了一些明顯的東西嗎?似乎我忽略了一些明顯的東西,但不知道是什麼。

編輯 這基本上在這裡得到了回答,但是由於我的 certbot 在 systemctl 計時器而不是 cronjob 上更新,我將嘗試在此處為這種情況提供答案,以供將來參考以及與我同船的任何人。

這與Gerald Schneider在這裡回答的問題基本相同。但是,由於我的設置不依賴於 cronjob 而是依賴於系統計時器,因此答案略有不同。

Let’s Encrypt 至少在 Ubuntu 上可以讓您在自動更新通過計時器執行時創建一個掛鉤(檢查使用systemctl list-timers並查看它是否存在)。

基本上有兩個事件可以掛鉤:部署和發布。將您的 bash 腳本分別放在/etc/letsencrypt/renewal-hooks/deployor/etc/letsencrypt/renewal-hooks/post文件夾中。Deploy 將在每個證書續訂時單獨執行,所有續訂完成後將執行 post。

部署腳本確實可以訪問 $ RENEWED_DOMAINS and the $ RENEWED_LINEAGE 變數。我將以下腳本放在etc/letsencrypt/renewal-hooks/deploy

 1 #!/bin/bash
 2 for domain in $RENEWED_DOMAINS
 3 do
 4         if [ "$domain" = my.mailserver.com ]
 5         then
 6                 doveadm reload >/dev/null
 7         fi
 8 done

每次重新部署“my.mailserver.com”的證書(顯然將其替換為真實域)時,它將重新載入 dovecot conf。希望這可以幫助任何正在尋找這個的人。

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