docker獲取Let's Encrypt永久免費SSL證書的方法

一、起因

官方的cerbot太煩瞭,不建議使用還不如野蠻生長的acme.sh,而這裡介紹docker運行cerbot獲取Let’s Encrypt永久免費SSL證書

二、選型

cerbot的證書不會自動刷新日期,但是acme.sh自帶這功能,每天凌晨0:00自動檢測過期域名並且自動續期

選擇docker運行cerbot,是為瞭讓服務器裡盡量少配置和無意義的程序,方便管理。例如Let’s Encrypt需要的Python2.7,git,pip我們都不需要裝在宿主機內,容器就自己配置好瞭

原文 https://github.com/acmesh-official/acme.sh/wiki/Run-acme.sh-in-docker

三、拉取鏡像

$ docker pull neilpang/acme.sh

以dns mode運行docker命令

$ docker run --rm -it \
 -v "$(pwd)/out":/acme.sh \
 -e Ali_Key="xxxxxx" \
 -e Ali_Secret="xxxx" \
 neilpang/acme.sh --issue --dns dns_ali -d domain.cn -d *.domain.cn

成功之後,證書會保存在out文件夾,也可以指定路徑,修改上面第一行 “$(pwd)/out”,改為你想要保存的路徑即可

四、註意

–dns dns_ali

要根據你域名的dns模式選擇,顯然這裡是阿裡。所以前面的兩項配置才是Ali_Key,Ali_Secret

Ali_Key,Ali_Secret

需要從阿裡雲後臺獲取

不知道自己域名的dns模式可以去這裡查找 https://github.com/acmesh-official/acme.sh/wiki/dnsapi

如何獲取域名的dns模式及相關配置,可以直接找你域名的客服

用騰訊做例子

$ docker run --rm -it \
 -v "$(pwd)/out":/acme.sh \
 -e DP_Id="xxxxxx" \
 -e DP_Key="xxxx" \
 neilpang/acme.sh --issue --dns dns_dp -d domain.cn -d *.domain.cn

騰訊這坑爹收購瞭DNSPod,所以是dns_dp

我一開始還以為是TX_Id,TX_Key,dns_tx之類的

找瞭一圈,發現自己的阿裡服務器正常使用,但就是步驟沒問題

於是問公司拿到域名賬戶,問騰訊客服才知道這事

當然,這跟騰訊無關,坑爹公司的鍋更大

老子幹這個啥都沒有

五、命令

docker run –rm 的命令懂得都懂,運行完就退出,這樣能執行個錘子自動更新ssh證書

方法一

不docker run –rm,直接docker run就好瞭

優點簡單,缺點一個容器專門跑這個,太浪費資源瞭

方法二

定時任務跑docker run –rm,原文的例子就有瞭

#run cron job
docker run --rm -it \
 -v "$(pwd)/out":/acme.sh \
 --net=host \
 neilpang/acme.sh --cron

其實–cron是linux的crontab參數,具體用法不累贅瞭

喜歡用crontab的用crontab

不喜歡的看看 博文裡的二

方法三

把這玩意和docker守護進程綁一起,畢竟守護進程必須開,不算浪費資源

這是acme.sh的推薦做法

同樣帶原文的例子

$ docker run --rm -itd \
 -v "$(pwd)/out":/acme.sh \
 --net=host \
 --name=acme.sh \
 neilpang/acme.sh daemon

六、最終結果

$ docker run --rm -itd \
 -v "$(pwd)/out":/acme.sh \
 -e DP_Id="xxxxxx" \
 -e DP_Key="xxxx" \
 neilpang/acme.sh --issue --dns dns_dp -d domain.cn -d *.domain.cn daemon

到此這篇關於docker獲取Let’s Encrypt永久免費SSL證書的方法的文章就介紹到這瞭,更多相關docker如何獲取Let’s Encrypt永久免費SSL證書內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: