前言

这篇文章是重写的,之前写的是certimate 后来发现额certd之后就转向更加好用的certd了,certd的作者恰好也是dev-sidecar的作者,实力还是十分可以的。

材料

  1. 部署Certd,我采用的docker compose部署,下面粘贴脚本,脚本也是很简单,持久数据保存在模板文件data目录下.

    services:
      certd:
        image: registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest
        container_name: certd # 容器名
        restart: unless-stopped # 自动重启
        volumes:
          - /data/certd:/app/data
          - /etc/localtime:/etc/localtime
          - /etc/timezone:/etc/timezone
        ports: # 端口映射
          - "7001:7001"
          - "7002:7002"
        labels:
          com.centurylinklabs.watchtower.enable: "true"
        environment:
          - TZ=Asia/Shanghai
          - certd_system_resetAdminPasswd=false
          - certd_koa_hostname=0.0.0.0
      certd-updater:  
        image: containrrr/watchtower:latest
        container_name: certd-updater
        restart: unless-stopped
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
        environment:
          - WATCHTOWER_CLEANUP=true            # 自动清理旧版本容器
          - WATCHTOWER_INCLUDE_STOPPED=false   # 不更新已停止的容器
          - WATCHTOWER_LABEL_ENABLE=true       # 根据容器标签进行更新
          - WATCHTOWER_POLL_INTERVAL=600       # 每 10 分钟检查一次更新
    
  2. 注册微软outlook邮箱,之所以选择outlook,是因为我们需要使用到邮箱的SMTP服务,但是国内的这个服务相当的坑爹,密钥的有效期只有6个月(这里是163邮箱的有效期),但是国外的就没有密钥有效期的限制,我刚好使用微软账户登录浏览器从而实现跨系统数据同步,登录outlook十分方便(可以直接使用微软账户),所以就选择了outlook了.你要是使用谷歌浏览器,也可以配置谷歌邮箱.我在下方展示了outlook的SMTP参数的设置方法,该介绍来源于outlook官网.

    Username

    Your email address

    Password

    Your Microsoft account password.
    If your password is not being recognized, or if you want to add your Outlook.com account to a smart device like a home security camera, you may need an app password. Learn how to add your Outlook.com account to another mail app or smart device.

    IMAP server

    outlook.office365.com

    IMAP port

    993

    IMAP encryption

    SSL/TLS

    Authentication Method

    OAuth2/Modern Auth

    POP server name

    outlook.office365.com

    POP port

    995

    POP encryption

    SSL/TLS

    Authentication Method

    OAuth2/Modern Auth

    SMTP server name

    smtp-mail.outlook.com

    SMTP port

    587

    SMTP encryption

    STARTTLS

    Authentication Method

    OAuth2/Modern Auth

  3. 创建腾讯子账户,这样一来,即使密钥泄露也不会导致关键权限被他人得到,比如我的子账户的权限就是QCloudResourceFullAccess,官方注解:该策略允许您管理账户内所有云服务资源(除了财务的所有权限,以及CAM的部分接口,比如管理子用户属性、子用户密钥、用户组等特殊资源的权限。)也就是不存在乱开通套餐的情况.这里简单介绍一下子账户的开通方法以及API密钥的获得方法.

    1. 进入腾讯云官网

      2025-08-17_173403.webp
    2. 登陆后点击控制台,进入控制台操作面板.将鼠标移动到账号,就可以看到"访问管理"

      2025-08-17_173534.webp
    3. 进入访问管理界面,可以看到访问管理的操作界面中已经出现了访问密钥的选项,但是那个是主要账户的访问密钥设置界面,该密钥具有非常大的权限,单纯的DNS解析,申请证书,这样的常规操控云产品其实用不上这么大的权限,所以这里我们选择新建子账户.

      2025-08-17_173704-kEhT.webp
    4. 单击用户选项卡的下级选项 - "用户管理",可以看到这里有两个账户,第一个是主账户,第二个是我现在用来管理云服务的账户,主账户区别于子账户的唯一特征就是具有财务权限,可以开通/取消产品.

      2025-08-17_185251.webp
    5. 你可以这么理解,腾讯云的密钥和用户绑定,一个用户可以有多个密钥,但是这个密钥就代表了用户本人,具有和用户本人相同的权限,如果你希望有多种不同的权限配置你就需要有不同权限配置的用户.这里我们自动部署SSL无需财务权限,为了演示,我新建一个子账户作为演示.由于这个用户只是用于API调度,无需控制台登录,所以访问方式设置为了编程访问.用户权限设置为QCloudResourceFullAccess这样就可以操控出财务以外的所有服务,包括CDN,服务器,SSL申请,域名解析之类,这个相对全能的用户就是我们后续自动部署SSL的基石.

      2025-08-17_201451.webp
    6. 当我们创建用户后,界面自动跳转到密钥界面,如果我们的访问方式设置的不是编程访问,而是控制台访问,为了获取密钥我们需要额外的操作,这里我们的目的已经达到,所以我就 不再展示另一种了.

      2025-08-17_201960.webp
    7. 记住这个界面的secretid 和 secretkey ,后续需要使用,另外需要记住的是腾讯云的key具有失效,3个月不使用自动失效,这也是为了账户安全,但是我们部署SSL自动部署服务后,就没有这种情况了,由于90天内必然执行一次,不存在失效的情况.这个CSV文件也是建议长期留存,因为长期有效,而且基本上有了这个文件就无需登录腾讯云也可以操作腾讯云大部分服务了.

  4. 打开宝塔面板的设置选项,开放宝塔API访问.记住接口密钥和宝塔面板的端口,后续需要用到.

    2025-08-18_103534.webp

操作

因为十分的简单,只需要你创建一个流水线,缺什么,软件会自己提示你缺少什么,你只需要根据引导就顺利完成配置,十分的无脑和简单,所以有的时候我也很好奇,前段时间好像是国外哪个大厂忘记续SSL,导致用户登录不上去,还上了新闻,我当时就在纳闷了,现在自动申请SSL的项目数不胜数,难道他们的项目上线后就不更新了?

这里我放一下我的流水线,我有两个域名,分别是: xzyuse.site xzyuse.space ,然后有三台服务器,同时面板也需要自动部署IP证书。可以说基本上已经是典型场景了。所以你有理由相信Certd完全可以用于业务场景。我这里就不录制部署视频了,放一张流水线示意图意思意思就OK了。

image-BlIF.webp