前言

上一章節我們講解如何申請 domain 並且實作 SSL,但是 OpenSSL 不便之處在於三個月憑證會過期並且需要重新申請,網頁的 https 也代表著將過期而無法連線,故這邊我們來聊聊如何自動化 openSSL 並且實作它。

Step1 新增更新程式腳本

  1. 新增一 sh 腳本程式 renew-certificate.sh
    sudo vim /opt/bitnami/letsencrypt/scripts/renew-certificate.sh
  2. 寫入腳本
sudo /opt/bitnami/ctlscript.sh stop nginx
sudo /opt/bitnami/letsencrypt/lego —-tls -—email="wowfuncode@gmail.com"  -—domains="www.wowfuncode.com" —path="/opt/bitnami/letsencrypt" renew --days 90
sudo /opt/bitnami/ctlscript.sh start nginx

首先我們先停止 webserver 服務器 nginx
接著透過 letsencrypt 產生新的 SSL 憑證
再重啟 nginx 基本上就完成了

Step2 設定 Crontab 自動排程

  1. sudo crontab -e 開始編輯 Crontab 腳本
  2. 加入指令
 0 0 1 * *  sh /opt/bitnami/letsencrypt/scripts/renew-certificate.sh 1>> /opt/bitnami/letsencrypt/logs/renew-log 2>> /opt/bitnami/letsencrypt/logs/renew-error

這個指令代表每個月 1 號定期執行我們剛剛好寫好的腳本 renew-certificate.sh,假如正確執行則寫 log 進 renew-log,反之錯誤則寫入進 renew-error 等 log 檔案。

  1. 啟動 crontab
sudo service cron start 

如此一來,openSSL三個月一定會在月底 23:59:59 過期,而更新憑證則會發生在每月的 1 號進行,確保絕對不會遺漏憑證。

補充:更多 Crontab 腳本設定可以參考
Linux 設定 crontab 例行性工作排程教學與範例 – G. T. Wang

Step3 檢驗 log

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/15c5084e-f83c-4660-9d7e-8f149b05ffff/Untitled.png

看起來沒問題,也能透過進行檢驗 SSL Checker 進行 SSL 檢驗

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b523e7d6-2e33-411d-9c4a-9738600d1627/Untitled.png

以上是自動化 SSL 過程以及檢驗是否正確運行,那麼我們下次見囉~