環境與需求:
Ubuntu雲服務器上,已經做好了ssl證書的免費申請,但是證書的期限是3個月,3個月到期后必須重新申請或者更新。由於k8s集群里的服務一直在使用證書,每三個月人工更新太麻煩,所以想要配置一些做個定時自動更新。
准備:
其中,
certbot-auto 執行命令,可以對證書進行申請更新刪除等一系列操作
dns_script 調用連接服務器控制台設置DNS校驗記錄的腳本
pytz python的一個模塊
一、下載hook功能的腳本文件
git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au.git
目錄內容:
python-version里的腳本是python環境使用的,外面的腳本是PHP環境使用的,都是同一種效果
二、獲取AccessKeyID和AccessKeySecret,登錄服務器控制台
三、更新腳本
我使用的是python腳本,修改里面變量ACCESS_KEY_ID和變量ACCESS_KEY_SECRET的值為上一步得到的ID和密碼
並且要賦予兩個腳本的執行權限(這個很重要,我之前就忘記了,浪費了很多時間)
四、默認的python缺少pytz模塊,而腳本里用到了pytz
pip install wheel
pip install pytz-2018.6-py2.py3-none-any.whl
五、更新測試
./certbot-auto renew --cert-name scdsc.org.cn --preferred-challenges dns-01 --manual-auth-hook dns_script/python-version/au.sh --dry-run
其中,
--cert-name 指定更新哪個證書
--manual-auth-hook 指定使用更新DNS記錄的腳本
--dry-run 測試更新,並不會真的更新
--preferred-challenges 應該可以不用加,因為執行更新命令會自動去調取cert的配置文件,里面有各種參數
./certbot-auto renew --cert-name scdsc.org.cn --preferred-challenges dns-01 --manual-auth-hook dns_script/python-version/au.sh --force-renew
--force-renew 強制更新,由於證書可使用時間還很長,加上此選項便可以強制更新了
六、更新成功,然后定時任務執行更新命令
詳情參考:
生成DNS校驗記錄:https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au
pytz模塊包下載:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pytz