Docker 部署 acme.sh并申请证书

Docker 部署 acme.sh并申请证书

       最近有个服务证书到期了,又是习惯性按照原来方式,到服务器商那边申请,结果发现规则改了,现在证书只能申请3个月,意味着每3个月就得折腾,重新申请换一次,这个过程也太频繁琐碎了,于是打算看看有什么脚本方式去申请,网上一搜,看到了acme.sh,并且可以用docker部署,刚好自己也会docker,于是决定用docker来部署acme.sh并申请证书,下面跟大家分享如何操作。

       由于我的域名是在腾讯云购买的,所以下面所有操作都是基于腾讯云的域名(dnspod),其他厂商的修改几个配置就可以,大家可以自己自行网上搜索,这玩意网上资料一大堆。

       一、申请dnspod token

       申请证书时,需要验证域名拥有权,不想手动去填写txt来验证,可以使用acme.sh自带API去实现,所以就需要申请dnspod token,配置截图如下

124.png

大家别取错哈

       二、部署acme.sh

       这里我是用docker方式部署,docker-compose文件如下

version: "3"
services:
  acme_tx:
    image: neilpang/acme.sh
    container_name: acme_tx_compose
    restart: always
    command: daemon
    environment:
    - DP_Id=自己dnspodId
    - DP_Key=自己dnspodToken
    volumes:
      - /home/app/acme_tx/cert:/acme.sh

里面的DP_Id跟DP_Key就是上一步申请的配置,然后我们在服务器/home/app/acme_tx这个路径作为acme.sh映射目录。然后我们直接执行如下命令进行部署

docker-compose up -d

       三、申请证书

       完成部署后,我们开始来申请证书,首先将默认证书服务器切换为 letsencrypt,默认是ZeroSSL,我一直申请不成功,后面改成letsencrypt就可以申请下来。

docker exec acme_tx_compose acme.sh --set-default-ca --server letsencrypt

       然后我们需要到zerossl注册一个账号用来绑定,假如账号是test@gmail.com,执行以下命令行

 docker exec acme_tx_compose acme.sh  --register-account  -m test@gmail.com --server zerossl

比如我们现在要申请的域名是gemini.test.cn,我们可以通过以下命令行执行

docker exec acme_tx_compose acme.sh --issue --dns dns_dp -d gemini.test.cn -d test.cn

然后就是等他申请,最终申请下来效果图如下

123.png

我们去上面我们设置的映射目录里面查看home/app/acme_tx,在下面有个cert目录,里面有我们申请的域名为名称的目录,申请下来的证书就在里面。

       四、自动化续期

       在 daemon 守护模式下,acme.sh 会根据申请记录,每 60 天自动更新证书,这样我们证书到期了变会自动更新。

       以上就是利用acme.sh来申请免费证书。

0条评论

发表评论