上一篇結尾有提到要教大家如何自動更新SSL憑證
因為最近有些忙碌比較沒時間寫
今天抓一點空檔紀錄一下
以免變成食言而肥的"肥仔”
之後若有時間再教大家一些簡單的優化
若是真想用gitlab page來架設blog
我想應該值得關注一下喔

其實這流程主要是參考這位老兄所寫的文章
若是想看原文的可以點進去看看
這邊只是將其內容簡化
並修改成目前可以用的版本
(因為事實上照上面做已經不能使用了)

自動更新SSL憑證實做開始

STEP1
這邊假設你已經申請好Let’s Encrypt的憑證
若是未完成可以參考上一篇文章
都完成後,請先新增三個檔案在你的blog根路徑底下
第一個 letsencrypt_generate.sh

第二個 letsencrypt_authenticator.sh

第三個 letsencrypt_cleanup.sh

當然你不能完全ctrl+c ctrl+v
因為有些東西是需要修改的
在letsencrypt_generate裡將所有www.domain.com改成你自己的domain
在letsencrypt_cleanup中要修改成你自己的git repo
這裡簡單說明一下以上三個檔案的功用

  • letsencrypt_generate > 判斷如果憑證超過30天就會自動去更新憑證,驗證成功會用gitlab的api去更新新的pem file
  • letsencrypt_cleanup > 用git更新blog上的challenge頁
  • letsencrypt_authenticator > 在20分鐘內不斷嘗試去驗證

STEP2
都設定好後
這時就是要使用gitlab的CI/CD功能自動化地來完以上的腳本
請修改.gitlab-ci.yml這檔案
將image改成如下

在最後面加上

稍微解釋一下
因為Gitlab預設的hugo:latest image是在Arch linux容器上
而Arch linux是非常輕量的linux
就連bash curl都不能執行…
所以我就自己簡單做一個image放上去自己Repository
大家如果不嫌棄的話歡迎使用
如果你不使用的話就必須修改letsencrypt-renewal裡面的script
進行安裝bash curl 等等東東…最重要的是certbot
而letsencrypt-renewal的主要目的
就是之後要給pipline呼叫的

STEP3
最後一個步驟
去Gitlab設定Pipeline,並定期執行它
首先進去CI/CD > Schedules > 點選 New schedules
在Description輸入letsencrypt-renewal
選擇每天凌晨4點執行
選擇適當的時區
選擇barnch為master
設定Variables

  1. 至user底下的settings > Access Tokens > Personal Access Tokens
  2. 自行取一個名稱,並在scopes中將api打勾
  3. 按下下面的create personal access tokens將會獲得一組token並把他記下來

將剛剛的token貼在Variables欄位中並命名為CERTBOT_RENEWAL_PIPELINE_GIT_TOKEN
哈哈~如此就大功告成摟
以下是大致上設置完的截圖 當以上動作都做完了
就只要等凌晨的時候gitlab每天就會自動幫你更新憑證摟
若想要手動執行
只需要到Pipelines點一下Run Pipelines就會開始執行
雖然以上步驟看視有點複雜
但是做完一次就一勞永逸摟