9

docker获取Let's Encrypt永久免费SSL证书

 3 years ago
source link: http://www.cnblogs.com/ydymz/p/14225495.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一 起因

官方的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

ps.

腾讯这坑爹收购了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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK