ACME 自动续签 SSL(阿里云/腾讯云)

  • 进入 腾讯云 DNSPOD 控制台的 API密钥管理:https://console.dnspod.cn/account/token/token

  • 进入 DNSPod Token选项卡,创建密钥

  • .bashrc 文件中添加下面两行命令,可以使用 vim 或者编辑器,例如 webstorm 或者 idea

    bash
    export DP_Id="上一步生成的 ID" # 如果是阿里云改成 Ali_Key
    export DP_Key="上一步生成的 Token" # 如果是阿里云改成 Ali_Secret
    • 保存后运行

    • source ~/.bashrc

  • 安装 acme.sh

    • curl https://get.acme.sh | sh
    • 或者 wget -O - https://get.acme.sh | sh
  • 修改 ~/.bashrc,添加 acme 的环境变量(选做)

    • echo 'export PATH="$HOME/.acme.sh/:$PATH"' >> ~/.bashrc

    • 保存后运行

    • source ~/.bashrc

  • acme.sh 现在默认使用 ZeroSSL 作为证书颁发机构(CA),使用邮箱注册一个 ACME 账户

    • 注意换成自己的邮箱

    • acme.sh --register-account -m mlnrmsw@gmail.com

  • 注册成功显示类似的内容

    sh
    [root@VM-16-8-centos docker-compose]# acme.sh --register-account -m mlnrmsw@gmail.com
    [Wed Oct  2 10:28:08 PM CST 2024] No EAB credentials found for ZeroSSL, let's obtain them
    [Wed Oct  2 10:28:10 PM CST 2024] Registering account: https://acme.zerossl.com/v2/DV90
    [Wed Oct  2 10:28:12 PM CST 2024] Registered
    [Wed Oct  2 10:28:12 PM CST 2024] ACCOUNT_THUMBPRINT='xxxxx'
  • 申请证书(这里改成自己的域名和自己的子域名,如果没有子域名,第二个 -d 后面可以删掉)

    • acme.sh --issue --dns dns_dp -d leklekzai.com -d *.leklekzai.com

    • 如果是服务器是阿里云,需要将 dns_dp 换成 dns_ali

  • 默认情况下,acme.sh 会自动每 60 天检查和续签证书,无需手动修改时间计划

  • 查看定时任务,确认 acme 能自动续签

    • crontab -l

    • 看到以下命令证明定时任务创建成功了

      sh
      35 15 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
    • 这条 cron 任务的意思是 每天的 15:35 执行一次 /root/.acme.sh/acme.sh --cron --home "/root/.acme.sh" 命令

  • 配置 Nginx 在证书更新后自动重启

    sh
    # 注意:最后一行参数可能不是必要。还需要换成自己的域名和公钥私钥路径
    acme.sh --install-cert -d leklekzai.com --ecc \
      --fullchain-file /root/server-config/ssl/live/blog.leklekzai.com/fullchain.cer \
      --key-file /root/server-config/ssl/live/blog.leklekzai.com/leklekzai.com.key \
      --reloadcmd "docker-compose restart nginx"
  • 如果你使用 Docker 容器,可以使用 docker-compose 来重启 Nginx:

    • --reloadcmd "docker-compose restart nginx"
  • 查看现有证书的详细信息 acme.sh --list

    • Main_Domain:申请的主域名
    • KeyLength:密钥长度
    • SAN_Domains: 其他的附加域名(如 *.example.com)
    • CA:证书颁发机构
    • Created:证书创建时间
    • Renew:下次续签时间
  • 输出类似如下

    sh
    [root@VM-16-8-centos docker-compose]# acme.sh --list
    Main_Domain    KeyLength  SAN_Domains      CA           Created               Renew
    leklekzai.com  "ec-256"   *.leklekzai.com  ZeroSSL.com  2024-10-02T15:14:47Z  2024-11-30T15:14:47Z
album
profileHersan

热爱编程,开源社区活跃参与者

7文章
0标签
10分类