之前申請了 wosign 的免費 SSL 證書,後來發現 wosign 證書不支持單個證書同時驗證根域和 www 子域,所以後面又換成了現在的 StartCom 證書。
不過 StartCom 有個缺點,就是在 nginx 重啟 或 重新加載 的時候會讓輸入私鑰的密碼。雖然輸密碼很煩,但是一般只用輸入一次就不用管了,所以我也就沒考慮這麼多。
結果沒過幾天就杯具了。前兩周把主站和 git 都搬到了 windowsazurue 上面,昨天重啟機器之後,發現 ssh 連不上了。於是直接找 azure 的客服,他們查了後告訴我機器啟動過程中,在 nginx 那裡卡住了:
1
很顯然就是因為證書私鑰密碼的緣故。在一番折騰後,終於解決了這個問題。
其實很簡單,我們只需要導出一份不需要私鑰密碼的私鑰文件就可以了。假設私鑰文件為 server.key ,執行下面命令:
openssl rsa -in server.key -out server.key.unsecure
然後把 server.key.unsecure 的路徑替換掉原來 nginx 配置文件裡的證書路徑:
ssl_certificate /etc/ssl/server.crt;
# 修改下面這一行指向我們生成的server.key.unsecure文件
ssl_certificate_key /etc/ssl/server.key.unsecure;
之後改變 nginx 的狀態都不用輸證書密碼了。