前言
從去年一直用Let’s Encrypt覺(jué)得還挺不錯(cuò)的,畢竟是免費(fèi)的冯袍,用著也挺方便,不過(guò)當(dāng)時(shí)不是通配符的碾牌,只能申請(qǐng)www開頭域名康愤,直到今年3月份后,Let’s Encrypt開放了通配符證書舶吗,所以搞事情的我又申請(qǐng)了通配符證書征冷,并且寫了一篇從http網(wǎng)站快捷免費(fèi)升級(jí)到https的文章,歡迎過(guò)來(lái)點(diǎn)個(gè)小心心?(^_-)
但是通配符該如何升級(jí)呢誓琼?很多朋友現(xiàn)在使用了 *.yuming.com
卻不能直接更新了检激,那么這篇文章就帶大家來(lái)看看如何更新通配符證書。
先來(lái)個(gè)小廣告腹侣,君哥的Java零基礎(chǔ)初級(jí)學(xué)習(xí)全套視頻已經(jīng)推出啦
有弟弟妹妹的可以看過(guò)來(lái) https://hledu.ke.qq.com
想做在線講課的也可聯(lián)系
一叔收、證書常規(guī)操作
查看當(dāng)前服務(wù)器所配置的證書
-- 查看證書可執(zhí)行文件位置
find / -name certbot-auto
-- 找到位置后執(zhí)行該命令查看證書
./certbot-auto certificates
輸出證書狀態(tài)如下,我這邊有4個(gè)
直接更新證書
如果你申請(qǐng)了通配符證書筐带,直接按正常流程直接執(zhí)行./certbot-auto renew
更新今穿,單域名的證書更新完成了,但通配符就蛋疼了伦籍,出現(xiàn)錯(cuò)誤如下代碼和圖,這里我只貼出異常部分
Attempting to renew cert (51object.com-0001) from /etc/letsencrypt/renewal/51object.com-0001.conf
produced an unexpected error: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook
when using the manual plugin non-interactively.',). Skipping.
重點(diǎn)是:--manual-auth-hook
腮出,意思就是當(dāng)我們自動(dòng)使用插件的時(shí)候必須提供一個(gè)身份驗(yàn)證腳本帖鸦,我們可以使用cerbot
提供的--manual-auth-hook
來(lái)進(jìn)行證書的更新,因?yàn)橐浫隓NS記錄胚嘲,所以會(huì)失敗(說(shuō)到這里作儿,是否還記得申請(qǐng)時(shí)需要走云服務(wù)器配置DNS記錄的那一刻)
根據(jù)這個(gè)解決思路:
- 可以使用 certbot 插件,比如 certbot-dns-cloudflare 插件(還有其他的)馋劈,就是自動(dòng)更新 cloudflare 等 DNS 的記錄攻锰。
- 手動(dòng)編寫腳本,cerbot 官方提供了 cloudflare 的樣例妓雾。
這里呢我使用了
Github
上已有朋友編寫的python腳本代碼進(jìn)行操作娶吞,其原理就是通過(guò)訪問(wèn)【阿里 or 騰訊】云接口生成DNS校驗(yàn)記錄,大家先下載下來(lái)械姻。
在這里感謝他們的付出與貢獻(xiàn)妒蛇,開源推動(dòng)了互聯(lián)網(wǎng)的進(jìn)步,你們是優(yōu)秀的程序員
代碼地址如下:Let’s Encrypt 通配符證書如何續(xù)期代碼
注意:使用python的朋友只需要2個(gè)文件即可(sslupdate.sh和27|36.py)
繼續(xù)干,如何續(xù)期绣夺?
如下兩行命令是需要先將github文件下載下來(lái)吏奸,替換掉py文件中的ACCESS_KEY_ID
和ACCESS_KEY_SECRET
,首先需要開放云控制臺(tái)中的accesskeys
陶耍,如何開放可以去查閱其他資料奋蔚,這里不做描述,
命令如下
1:對(duì)機(jī)器上所有證書 renew
$ ./certbot-auto renew --manual --preferred-challenges dns --manual-auth-hook /usr/local/ssltpfupdate/sslupdate.sh
2:對(duì)某一張證書進(jìn)行續(xù)期
$ ./certbot-auto renew --cert-name 51object.com-0001 --manual-auth-hook /usr/local/ssltpfupdate/sslupdate.sh
小叉子旺拉,沒(méi)問(wèn)題的可以跳過(guò)這段
我CentOS上的python版本為自帶的2.7.5,運(yùn)行python腳本時(shí)棵磷,提示出錯(cuò):No module named pytz.tzinfo
所以需要安裝pytz模塊才能接著做蛾狗,pytz.whl模塊下載地址
[root@iz2zeip7gvbiukof8kwdapz python]# pip install wheel
[root@iz2zeip7gvbiukof8kwdapz script]# pip install pytz-2018.5-py2.py3-none-any.whl
安裝完成后執(zhí)行sh文件,這次成功更新仪媒,執(zhí)行的命令如下:
-- 檢驗(yàn)過(guò)程是否無(wú)異常沉桌,成功后并不會(huì)生效(測(cè)試命令)
./certbot-auto renew --cert-name 51object.com-0001 --manual-auth-hook /usr/local/ssltpfupdate/sslupdate.sh --dry-run
-- 正式更新,此操作生效
./certbot-auto renew --cert-name 51object.com-0001 --manual-auth-hook /usr/local/ssltpfupdate/sslupdate.sh
下圖為測(cè)試命令執(zhí)行
正式更新命令我就不貼圖了留凭,和測(cè)試的輸出基本一致,祝你好運(yùn)啦偎巢。蔼夜。。压昼。
更新完成之后你會(huì)發(fā)現(xiàn)阿里云上多了一條TXT記錄求冷,就是py代碼中通過(guò)接口新增的
本次更新操作到此結(jié)束,接下來(lái)我們可以加入到定時(shí)任務(wù)中
加入 crontab
編輯文件 /etc/crontab :
1 1 */1 * * root certbot-auto renew --manual --preferred-challenges dns --manual-auth-hook /腳本目錄/sslupdate.sh