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命令linux

$ 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",改成你想要保存的路径便可git

四 注意github

--dns dns_alidocker

要根据你域名的dns模式选择,显然这里是阿里。因此前面的两项配置才是Ali_Key,Ali_Secretapi

Ali_Key,Ali_Secret 服务器

须要从阿里云后台获取dom

 

不知道本身域名的dns模式能够去这里查找 https://github.com/acmesh-official/acme.sh/wiki/dnsapissh

如何获取域名的dns模式及相关配置,能够直接找你域名的客服阿里云

 

用腾讯作例子spa

$ 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
相关文章
相关标签/搜索