Appearance
CertiMan CLI 自动化实践:宝塔网站证书部署与自动续期
CertiMan CLI 从 CertCloud 获取证书并安装到宝塔 Nginx 当前使用的路径;部署命令(Hook)检查配置后重新加载服务。
本文适用于已有正常 HTTPS 的宝塔 Nginx 网站,CLI 与宝塔安装在同一台 Linux 服务器。接管网站当前证书对应的订单,保留原网站、证书路径和业务配置。尚未启用 HTTPS 时,请先完成宝塔首次部署指南。
操作流程: 接入已有订单 → 核对证书路径 → 配置输出与重载命令 → 更新并验收 → 开启计划任务。
方案是怎样的?
CLI 安装新证书后,执行 deploy 中的配置检查和重载命令,无需另建复制脚本。系统计划任务只检查已开启自动续期的证书,满足续期条件才更新,不是每次扫描都重新签发。
网络放行
宝塔服务器需能通过 HTTPS(443)访问 certiman.trustasia.com、certcloud.cn 和 api.certcloud.cn。使用 DNS 验证脚本时,还需访问 DNS 服务商 API。安装或登录连接失败时,运行 certiman doctor,按诊断说明检查。
开始前准备什么?
- 一个由宝塔 Nginx 管理、已经能正常访问 HTTPS 的网站。
- 该网站当前证书对应的 CertCloud 订单和匹配私钥。
- 服务器 root 权限;安装、接入、部署和计划任务都在宝塔服务器的同一个 root 账号下操作。
本文使用 trustasia.com 作为示例,替换为实际域名。网站访问检查在自己的电脑上进行。
第一步:将已有订单接入 CertiMan CLI
本步骤将已有订单和匹配私钥交给 CLI 管理。已由当前账号的 CLI 管理且材料齐全时,核对状态后可直接进入第二步。
1.1 确认订单并安装 CLI
在 CertCloud 打开网站当前证书对应的订单,确认支持“自动交付”。进入接入引导,选择“命令行工具 CLI → Linux”;没有对应入口时联系支持确认。

通过宝塔的“终端”或 SSH 连接服务器。使用 sudo 账号时先执行 sudo -i,再执行:
bash
whoami
curl -fsSL https://certiman.trustasia.com/install.sh | sh
certiman version确认 whoami 输出为 root,按安装提示确认协议;已安装时无需重复安装。详细方法见官方安装指引。
1.2 登录并导入原始私钥
在同一 root 终端执行:
bash
certiman login status缓存有效且账户正确时不重复授权;未登录时执行 certiman login。在浏览器中核对账户及应用名称为 CertiMan 后授权。终端没有浏览器时,在自己的电脑上打开 CLI 输出的授权地址。

将订单号和与网站当前证书匹配的私钥路径替换为实际值,首次接入时执行:
bash
certiman issue --reuse-order YOUR_ORDER_ID --private-key /root/cert-files/privkey.pem私钥仍保存在网站证书目录中时,可使用第二步网站配置中 ssl_certificate_key 指向的文件。找不到匹配私钥时,参见文末重新签发说明。
1.3 确认订单状态和本地材料
将域名换成订单主域名,查看状态和文件:
bash
certiman status -d trustasia.com
ls -l /root/.certiman/cc/certs/trustasia.com/确认已签发,且目录中已有 fullchain.pem、privkey.pem 和 cert.yaml。目录名以 CLI 输出为准;只有 CLI 提示尚有验证或审核待处理时,才按订单提示完成。

1.4 确认后续域名验证可自动完成
自动续期时,CertCloud 仍需要验证域名归属。根据订单使用的方式处理:
持久验证: 使用 dns-persist 时,按订单提示添加 TXT 记录;使用 dns-proxy 时,添加 CNAME 记录。授权有效期间通常可以继续使用这些记录,无需每次续期修改。已经配置好的记录继续保留,不要在首次签发后删除,也不要配置会删除它们的清理操作。
普通 DNS 验证: 每次签发需要新验证记录时,先配置 DNS Hook 和服务商 API 凭据。CLI 将本次记录名、类型和值交给 Hook,由 Hook 调用服务商 API 写入 DNS。具体方法见官方 DNS Hook 示例。确认自动写入可用后再开启续期;仅安装 CLI 或配置 Nginx 重载命令,不会自动完成 DNS 验证配置。
第二步:找到网站正在使用的证书路径
先在浏览器确认网站 HTTPS 正常,再在宝塔打开「网站 → 目标网站 → 设置 → 配置文件」,找到该网站的 server 配置段。例如:
nginx
server {
listen 443 ssl;
server_name trustasia.com;
ssl_certificate /www/server/panel/vhost/cert/trustasia.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/trustasia.com/privkey.pem;
# 原网站业务配置
}
确认 server_name 是要更新的网站域名,记录以下两项:
| 配置项 | 记录什么 | 下一步填入 |
|---|---|---|
ssl_certificate | 完整证书链文件路径 | output.fullchain_file |
ssl_certificate_key | 私钥文件路径 | output.key_file |
路径以网站配置为准,不按域名猜目录。第三步沿用这两个路径,网站配置不用改。更新前保存当前证书、私钥和配置副本;若宝塔面板或其他工具已有该网站的自动续期任务,接入前暂停对应任务,避免同时写入。
第三步:配置证书输出与重载命令
在宝塔服务器的同一 root 终端编辑 /root/.certiman/cc/certs/trustasia.com/cert.yaml,其中 trustasia.com 换成第一步的订单主域名。合并下面字段,保留订单、验证和其他配置:
yaml
output:
formats: [pem]
fullchain_file: /www/server/panel/vhost/cert/trustasia.com/fullchain.pem
key_file: /www/server/panel/vhost/cert/trustasia.com/privkey.pem
deploy: '/www/server/nginx/sbin/nginx -t && /www/server/nginx/sbin/nginx -s reload'
renew:
auto_cert: false
auto_order: falsefullchain_file:填第二步ssl_certificate后面的完整路径。key_file:填第二步ssl_certificate_key后面的完整路径。deploy:检查配置成功后重新加载宝塔 Nginx。本文使用宝塔常见程序路径/www/server/nginx/sbin/nginx,实际安装路径不同时替换命令中的两处路径。
目标目录沿用网站现有目录,须由 root 可写。CLI 先安装证书和私钥,再执行部署命令;私钥权限为 0600。保存配置后进入第四步,网站正常后再开启自动续期。
第四步:更新并检查网站访问
在同一 root 终端执行,将域名换成第一步的订单主域名:
bash
certiman deploy -d trustasia.com如果提示之前已部署成功而跳过,本次需要重新执行时使用:
bash
certiman deploy -d trustasia.com -f这会部署本机已有证书,不重新申请。若部署的仍是同一张证书,有效期不会变化。
4.1 检查网站访问
确认部署命令没有报错,在自己的电脑上用浏览器访问 https://trustasia.com/。域名换成第二步 server_name 对应的网站域名;端口不是 443 时继续使用网站原 HTTPS 端口。
- 打开的是自己的网站,浏览器没有“连接不安全”或证书错误提示。
- 点击地址栏左侧的网站信息按钮,进入连接信息并查看证书,确认域名正确、有效期与 CertCloud 订单中本次部署的证书一致。
- 浏览常用页面,确认图片、样式和登录等功能正常。
本流程更新 Nginx 实际读取的文件,以网站实际提供的证书为验收依据,不仅看面板显示。使用 CDN 等代理或怀疑仍显示旧证书时,按证书检查说明核对宝塔 Nginx 上的证书。
检查通过后进入第五步;部署报错或网站异常时,先按本文异常恢复处理。
第五步:开启并确认自动续期
在同一 root 账号下修改原 cert.yaml 的续期字段,保留其他配置:
yaml
renew:
auto_cert: true
auto_order: falseauto_cert 开启订单服务期内的自动续期;auto_order: false 表示不自动创建付费续订订单,请提前安排订单续费。保留持久 DNS 记录或维护 DNS Hook,使后续验证可自动完成。
尚未注册系统计划任务时执行 install;已经注册时只用 status 查看:
bash
certiman cron install
certiman cron status确认任务已注册。系统定期执行 certiman cron,进入续期窗口后,CLI 获取新证书、安装到原路径并重载宝塔 Nginx,不需要一直开着终端。已有其他任务执行 CLI 时,只保留一个执行来源。
管理多张证书
每张证书都有自己的 cert.yaml。对另一张证书重复第一至第四步,在它的配置中填写对应网站的证书和私钥路径,验收通过后开启该证书的 renew.auto_cert。同一 root 账号的系统计划任务只需注册一次。
后续如何维护?
在宝塔服务器的同一 root 终端执行,将域名换成订单主域名:
bash
certiman status -d trustasia.com
certiman cron status
certiman doctor检查 /root/.certiman/logs/ 中的错误。证书已下载但部署失败时,修正文件路径或配置错误后,重新执行第四步的部署命令。网站证书路径变化时,在对应 cert.yaml 中更新目标路径,再部署并验收。
异常恢复
先将该证书的 renew.auto_cert 设为 false,确认部署任务已结束。配置检查或 reload 失败时,已写入的文件不会自动恢复。
需要恢复时,把第二步保存、仍有效且配对的证书和私钥恢复到原路径,保持 root 所有、私钥 0600。在服务器 root 终端执行,程序路径使用第三步的实际值:
bash
/www/server/nginx/sbin/nginx -t && /www/server/nginx/sbin/nginx -s reload完成后按第四步检查网站。不要用 certiman deploy 恢复旧文件,它会再次安装 CLI 当前的证书材料。
卸载 CertiMan(不再使用时)
以安装和注册任务时的 root 账号执行官方卸载脚本,按提示确认:
bash
curl -fsSL https://certiman.trustasia.com/uninstall.sh | sh卸载移除 CertiMan 注册的任务和程序,默认保留 /root/.certiman 中的证书、私钥及授权数据。宝塔网站已部署的证书和配置不会因此删除,后续更新需自行安排;其他企业任务和备份需单独管理。完整说明见官方卸载指引。
找不到原始私钥时重新签发
有匹配私钥时按第一步导入即可。只有无法找回时才重新签发;重颁发可能使旧证书失效,应先安排换证时间。首次接管订单时执行:
bash
certiman issue --reuse-order YOUR_ORDER_ID --on-existing-cert reissue已由本机 CLI 管理时,使用 certiman issue -d trustasia.com --on-existing-cert reissue。订单号和域名替换为实际值,两种方式选择一种。签发后确认材料,按第四步更新并验收。
