首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新SSL证书系统、申请godaddy的APIKEY

原创
作者头像
星哥玩云
发布2025-12-09 10:29:39
发布2025-12-09 10:29:39
4200
举报
文章被收录于专栏:运维安全运维安全

升级自动部署更新SSL证书系统、申请godaddy的APIKEY

公司之前花钱购买的ssl证书快到期了,由于'消费降级',这次领导说没有预算给到证书了...

于是使用了certd的开源方案,之前星哥写的 免费全自动申请和自动部署更新SSL证书的开源系统-certd 部署的certd,运行了几个月的时间,可以申请免费的ssl证书。

安装的是v1.31.2版,无法使用godaddy的api key,后台没有设置的选项,最近更新。

img
img

整理需求如下:

  1. 确认certd新版版本支持godaddy
  2. 如果支持则升级certd(确保数据完整性)
  3. 申请godaddy的APIKEY
  4. 自动更新证书

如图,新版的已经支持godaddy了。

img
img

升级Certd

因为之前已经安装certd,现在只需要升级docker镜像。

数据都保留在“/data/docker/certd/data”,一定要记得备份数据。

1.进入安装目录

远程ssh服务器

代码语言:javascript
复制
cd /data/docker/certd

2.查看docker-compose

代码语言:javascript
复制
cat docker-compose.yaml
version: '3.3' # 兼容旧版docker-compose
services:
  certd:
    # 镜像                                                  #  ↓↓↓↓↓ ---- 镜像版本号,建议改成固定版本号,例如:certd:1.29.0
    image: registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest
    container_name: certd # 容器名
    restart: unless-stopped # 自动重启
    volumes:
      #   ↓↓↓↓↓ -------------------------------------------------------- 数据库以及证书存储路径,默认存在宿主机的/data/certd/目录下,【您需要定时备份此目录,以保障数据容灾】
      #                                                                  只要修改冒号前面的,冒号后面的/app/data不要动
      - /data/docker/certd/data:/app/data
    ports: # 端口映射
      #  ↓↓↓↓ ---------------------------------------------------------- 如果端口有冲突,可以修改第一个7001为其他不冲突的端口号,第二个7001不要动
      - "7001:7001"
      #  ↓↓↓↓ ---------------------------------------------------------- https端口,可以根据实际情况,是否暴露该端口
      #- "7002:7002"
    #↓↓↓↓ -------------------------------------------------------------- 如果出现getaddrinfo ENOTFOUND错误,可以尝试设置dns
#    dns:
#      - 223.5.5.5      # 阿里云公共dns
#      - 223.6.6.6
#       # ↓↓↓↓ --------------------------------------------------------- 如果你服务器在腾讯云,可以用这个替换上面阿里云的公共dns
#      - 119.29.29.29  # 腾讯云公共dns
#      - 182.254.116.116
#       # ↓↓↓↓ --------------------------------------------------------- 如果你服务器部署在国外,可以用这个替换上面阿里云的公共dns
#      - 8.8.8.8       # 谷歌公共dns
#      - 8.8.4.4
#    extra_hosts:
#        # ↓↓↓↓ -------------------------------------------------------- 这里可以配置自定义hosts,外网域名可以指向本地局域网ip地址
#      - "localdomain.com:192.168.1.3"
#        #         ↓↓↓↓ ------------------------------------------------ 直接使用主机的网络,如果网络问题实在找不到原因,可以尝试打开此参数
#    network_mode: host
    labels:
      com.centurylinklabs.watchtower.enable: "true"
#    ↓↓↓↓ -------------------------------------------------------------- 启用ipv6网络,还需要把下面networks的注释放开
#    networks:
#      - ip6net
    environment:
#     设置环境变量即可自定义certd配置
#     配置项见: packages/ui/certd-server/src/config/config.default.ts
#     配置规则: certd_ + 配置项, 点号用_代替
#                                    #↓↓↓↓ ----------------------------- 如果忘记管理员密码,可以设置为true,重启之后,管理员密码将改成123456,然后请及时修改回false
      - certd_system_resetAdminPasswd=false
​
#     默认使用sqlite文件数据库,如果需要使用其他数据库,请设置以下环境变量
#     注意: 选定使用一种数据库之后,不支持更换数据库。
#     数据库迁移方法:1、使用新数据库重新部署一套,然后将旧数据同步过去,注意flyway_history表的数据不要同步
#                                    #↓↓↓↓ ----------------------------- 使用postgresql数据库,需要提前创建数据库
#      - certd_flyway_scriptDir=./db/migration-pg                        # 升级脚本目录
#      - certd_typeorm_dataSource_default_type=postgres                  # 数据库类型
#      - certd_typeorm_dataSource_default_host=localhost                 # 数据库地址
#      - certd_typeorm_dataSource_default_port=5433                      # 数据库端口
#      - certd_typeorm_dataSource_default_username=postgres              # 用户名
#      - certd_typeorm_dataSource_default_password=yourpasswd            # 密码
#      - certd_typeorm_dataSource_default_database=certd                 # 数据库名
​
#                                    #↓↓↓↓ ----------------------------- 使用mysql数据库,需要提前创建数据库 charset=utf8mb4, collation=utf8mb4_bin
#      - certd_flyway_scriptDir=./db/migration-mysql                     # 升级脚本目录
#      - certd_typeorm_dataSource_default_type=mysql                     # 数据库类型, 或者 mariadb
#      - certd_typeorm_dataSource_default_host=localhost                 # 数据库地址
#      - certd_typeorm_dataSource_default_port=3306                      # 数据库端口
#      - certd_typeorm_dataSource_default_username=root                  # 用户名
#      - certd_typeorm_dataSource_default_password=yourpasswd            # 密码
#      - certd_typeorm_dataSource_default_database=certd                 # 数据库名
​
#         ↓↓↓↓ ---------------------------------------------------------  自动升级,上面certd的版本号要保持为latest
#  certd-updater:  # 添加 Watchtower 服务
#    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 分钟检查一次更新
​
​
#    ↓↓↓↓ -------------------------------------------------------------- 启用ipv6网络,还需要把上面networks的注释放开
#networks:
#  ip6net:
#    enable_ipv6: true
#    ipam:
#      config:
#        - subnet: 2001:db8::/64

查看镜像、查看运行的容器:

代码语言:javascript
复制
查看镜像
docker images|grep certd
registry.cn-shenzhen.aliyuncs.com/handsfree/certd   latest    64080b99294c   7 months ago    651MB
​
查看运行的容器:
docker ps|grep certd
c9e0a2ac843b   registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest   "docker-entrypoint.s…"   7 months ago    Up 7 months              0.0.0.0:7001->7001/tcp, 7002/tcp            certd
​

3.停止并且删除容器

再次提醒,一定要备份数据!

代码语言:javascript
复制
docker stop certd
docker rm -f certd

4.删除镜像

代码语言:javascript
复制
删除镜像
docker rmi <镜像id>
docker rmi 64080b99294c

5.启动

代码语言:javascript
复制
docker compose up -d
WARN[0000] /data/docker/certd/docker-compose.yaml: `version` is obsolete 
[+] Running 5/11
 ⠼ certd [⣿⣤⣿⣿⣿⣀⣿⣀⠀⠀] Pulling                                                                                                                 7.4s 
   ✔ 2d35ebdb57d9 Pull complete                                                                                                               1.1s 
   ⠧ 9682177f5dda Downloading    [============================>                      ]  29.38MB/51.55MB                                       6.8s 
   ✔ e910c7b62cc7 Download complete                                                                                                           0.4s 
   ✔ eb9e06b66aae Download complete                                                                                                           0.5s 
   ✔ cbfaeef5880e Download complete 

确认是否升级

升级前v1.31.2

img
img

升级后v1.37.4

img
img

认证有了godaddy的授权

也多了一些其他的平台

img
img

再申请godaddy的APIKEY

使用CNAME认证

1.添加CNAME管理

如图进入后台

点击cname记录管理,添加,填写域名

img
img

2.添加域名解析记录

添加之后到godaddy里面添加一条cname记录。

img
img

3.认证成功申请ssl证书

点击认证,成功之后

再申请ssl证书的时候使用“CNAME代理认证”

img
img

Godaddy申请APIKEY

到最后才发现,这步不用操作!

代码语言:javascript
复制
认证成功 → 说明 API Key/Secret 是正确的。
​
权限不足 → GoDaddy 新政策要求:
​
DNS/域名管理 API:账户必须拥有 ≥10 个域名 或者订阅 Discount Domain Club(优惠域名计划)。
​
可用性/批量查询 API:账户必须拥有 ≥50 个域名 才能使用。
​
如果不满足条件,就会返回 ACCESS_DENIED 错误。
img
img

不过还是记录一下

1.登录godaddy

GoDaddy开发者中心

代码语言:javascript
复制
https://developer.godaddy.com/

2.点击API Keys

img
img

3.进入API Key Management

进入API Key Management后,点击[Create New API Key]进行创建API Key

img
img

4.创建API Key

创建API Key时,注意选择Environment,必须选择Production。

img
img

5.保存Key和Secret

img
img

6.在Certd中添加DNS授权

img
img

7.测试

img
img

报错

代码语言:javascript
复制
错误:请求连接超时,Error 【https://api.godaddy.com/v1/domains?limit=1】

最后

最后的最后,cname认证就可以解决问题的。浪费了一个下午,去配置APKKEY和https_proxy的代理。

以前要手动申请、下载、替换证书,搞不好还会因为忘记续期导致网站挂掉。现在使用云服务商的API Key+CNAME认证的配合certed,整个流程全自动跑起来,省心又稳妥。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 升级自动部署更新SSL证书系统、申请godaddy的APIKEY
    • 升级Certd
      • 1.进入安装目录
      • 2.查看docker-compose
      • 3.停止并且删除容器
      • 4.删除镜像
      • 5.启动
    • 确认是否升级
      • 升级前v1.31.2
      • 升级后v1.37.4
      • 认证有了godaddy的授权
    • 使用CNAME认证
      • 1.添加CNAME管理
      • 2.添加域名解析记录
      • 3.认证成功申请ssl证书
    • Godaddy申请APIKEY
      • 1.登录godaddy
      • 2.点击API Keys
      • 3.进入API Key Management
      • 4.创建API Key
      • 5.保存Key和Secret
      • 6.在Certd中添加DNS授权
      • 7.测试
    • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档