Appearance
CertiMan CLI 自动化实践:Apache 证书部署与自动续期
本文适用于已经能正常访问 HTTPS 的 Linux / Apache 2.4 网站。CertiMan CLI 将证书安装到网站原路径,部署命令(Hook)检查配置后重新加载 Apache,网站原设置继续使用。
尚未启用 HTTPS 时,请先完成Apache 首次部署指南。Debian/Ubuntu 使用 apache2,Rocky Linux 使用 httpd,按第三步选择命令。
操作流程: 接入已有订单 → 核对证书路径 → 配置输出与重载命令 → 部署并验收 → 开启计划任务。
方案是怎样的?
CertCloud 管理订单和签发,CLI 下载并安装材料,再调用 Hook 检查和加载 Apache。系统计划任务定期触发更新;需要时由 DNS Hook 完成验证。
首次手动部署验收后再开启计划任务。定期扫描只处理已开启自动续期的证书,满足续期条件才更新,不是每次扫描都重新签发。
网络放行
服务器需能通过 HTTPS(443)访问 certiman.trustasia.com、certcloud.cn 和 api.certcloud.cn。使用 DNS 验证脚本时,还需访问 DNS 服务商 API。CLI 安装成功后若连接异常,运行 certiman doctor,按诊断说明检查;自定义服务地址以实际配置为准。
第一步:将已有订单接入 CertiMan CLI
1.1 确认订单并安装 CLI
在 CertCloud 打开已有订单,确认支持“自动交付”。进入接入引导,选择“命令行工具 CLI → Linux”,无需重复申请订单。

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

在 CertCloud 订单接入引导中找到订单号,将它填入 YOUR_ORDER_ID;私钥路径填写网站当前证书配对的私钥文件。首次接入时执行:
bash
certiman issue --reuse-order YOUR_ORDER_ID --private-key /root/cert-files/privkey.pem已由本机 CLI 管理且材料齐全时不重复导入;找不到私钥时,参见文末找不到原始私钥时重新签发。
1.3 确认订单状态和本地材料
接入已签发订单后,查看 CLI 状态及本地文件。
bash
certiman status -d trustasia.com
ls -l /root/.certiman/cc/certs/trustasia.com/将示例域名替换为订单实际主域名。确认已签发,且目录中已有 fullchain.pem、privkey.pem 和 cert.yaml。目录名由订单主域名决定,请以 CLI 输出为准。

1.4 确认后续域名验证可自动完成
自动续期时,CertCloud 仍需要验证域名归属。根据订单使用的验证方式,按下面对应的一种处理:
持久验证: 使用 dns-persist 时,按订单提示添加 TXT 记录;使用 dns-proxy 时,添加指向平台的 CNAME 记录。授权有效期间通常可以继续使用这些记录,无需每次续期修改。已经配置好的记录继续保留,不要在首次签发成功后删除,也不要配置会删除它们的清理操作。
普通 DNS 验证: 如果每次签发都需要新的验证记录,就需要让 CertiMan 自动更新 DNS。先按 DNS 服务商配置 DNS 验证 Hook(自动写入验证记录的脚本)和 API 凭据;CertiMan 会将本次记录名、类型和值交给脚本,由脚本调用服务商 API 写入 DNS。具体配置见官方 DNS Hook 示例。确认自动写入可用后,再开启自动续期;仅安装 CertiMan 或配置 Apache 重载命令,不会自动完成 DNS 验证配置。
第二步:找到网站正在使用的证书路径
先在浏览器确认网站 HTTPS 正常,再打开 Apache 网站配置,找到 ServerName 对应网站域名的 <VirtualHost> 配置块,记下以下两项:
| 配置项 | 记录什么 | 下一步填入 |
|---|---|---|
SSLCertificateFile | 网站证书文件的完整路径 | output.fullchain_file |
SSLCertificateKeyFile | 私钥文件的完整路径 | output.key_file |
第三步沿用这两个路径,网站配置中的路径不用改。若还有其他工具更新这两个文件,先暂停其更新任务,避免同时写入。
第三步:配置证书输出与重载命令
在同一 root 终端编辑 /root/.certiman/cc/certs/trustasia.com/cert.yaml,其中 trustasia.com 换成第一步 CLI 显示的订单主域名。先保存网站当前的证书、私钥和配置副本,再修改已有字段,保留订单及验证配置。Debian/Ubuntu 示例:
yaml
output:
formats: [pem]
fullchain_file: /etc/apache2/tls/trustasia.com/fullchain.pem
key_file: /etc/apache2/tls/trustasia.com/privkey.pem
deploy: 'apache2ctl configtest && systemctl reload apache2'
renew:
auto_cert: false
auto_order: falsefullchain_file、key_file:分别填第二步找到的证书和私钥路径。deploy:检查配置成功后重新加载服务,Debian/Ubuntu 服务名通常为apache2。
证书目录须已存在且 root 可写。本文使用 Apache 2.4.8 及以上的完整证书链文件,CLI 将私钥设置为仅 root 可读写。
Rocky Linux 使用实际 /etc/httpd/ 下的路径,将 deploy 改为:
yaml
deploy: 'restorecon "$CERTIMAN_CERT_PATH" "$CERTIMAN_KEY_PATH" && httpd -t && systemctl reload httpd'restorecon 在证书写入后恢复目标文件的 SELinux 标签,再执行配置检查和重载。自定义目录需预先配置正确的持久标签规则,无需关闭 SELinux。
执行部署时,CLI 先将证书复制到配置的路径,再执行 deploy 中的检查和重载命令。保存配置后,继续第四步。
第四步:执行部署
在同一 root 终端执行,把 trustasia.com 换成第一步的订单主域名:
bash
certiman deploy -d trustasia.com如果提示之前已部署成功而跳过,本次需要重新执行时使用:
bash
certiman deploy -d trustasia.com -f确认命令没有报错,再检查网站。这里部署的是本机已有证书,不重新申请;如果仍是网站当前使用的同一张证书,有效期不会变化。
第五步:检查网站访问
在自己的电脑上打开浏览器,访问 https://trustasia.com/。把域名换成第二步 ServerName 对应的网站域名;网站端口不是 443 时,继续使用原网址中的端口。
- 确认打开的是自己的网站,浏览器没有“连接不安全”或证书错误提示。
- 点击地址栏左侧的网站信息按钮,进入连接信息并查看证书,确认域名正确、有效期与 CertCloud 订单中本次部署的证书一致。
- 浏览常用页面,确认图片、样式和登录等功能正常。
使用 CDN 等代理时,浏览器可能显示代理服务的证书,按证书检查说明核对 Apache 上的证书。 检查通过后继续第六步;出现证书错误或网站无法访问时,先按本文异常恢复处理。
第六步:开启计划任务
验收通过后,修改原 renew 节点:
yaml
renew:
auto_cert: true
auto_order: falseauto_cert 开启订单服务期内自动续期,auto_order: false 不自动续订订单。保留验证记录或维护 DNS Hook。尚未注册系统计划任务时,在同一账号下执行:
bash
certiman cron install
certiman cron statusCLI 注册的系统计划任务定期运行 certiman cron,续期下载后调用部署 Hook。已注册时无需重复安装;已有企业任务负责运行 CLI 时,不再添加重复任务。
计划任务由系统定期执行,不需要长期打开终端。
后续维护与异常恢复
定期执行 certiman status -d trustasia.com、certiman cron status 和 certiman doctor,检查 /root/.certiman/logs/ 及实际 HTTPS 访问。部署失败时先修复原因,再执行第四步命令,无需重新申请证书。备份包含私钥,恢复验证前不要删除。
异常恢复
关闭该证书的 renew.auto_cert,确认任务结束。CLI 写入文件后才执行配置检查;安装或重载失败时,部分文件可能已更新,且不会自动回滚。
必要时将更新前保存、仍有效且配对的证书和私钥恢复到第二步记录的路径,私钥仅允许 root 读写。Debian/Ubuntu 执行 apache2ctl configtest && systemctl reload apache2;Rocky 先对恢复的两个文件执行 restorecon,再执行 httpd -t && systemctl reload httpd。完成后按第五步检查网站。不要用 certiman deploy 恢复,它会再次安装 CLI 中的新材料。
自动更新期间的证书和配置备份沿用服务器备份安排。已失效的旧证书不能用于恢复。
停用自动化
只停用此证书时,将对应 cert.yaml 的 renew.auto_cert 改为 false,删除 deploy 字段,保留其他配置。其他证书仍需自动更新时,不卸载共用计划任务。当前账号下全部证书都不再需要任务时,可执行 certiman cron uninstall,再用 certiman cron status 确认。
卸载 CertiMan(不再使用时)
在安装和注册任务时的 root 账号下执行官方卸载脚本,按提示确认:
bash
curl -fsSL https://certiman.trustasia.com/uninstall.sh | sh卸载脚本移除 CertiMan 注册的计划任务、程序和命令补全,默认保留 /root/.certiman 中的证书、私钥及授权数据。Apache 已部署的证书和网站配置不删除,当前 HTTPS 继续使用已部署证书,后续更新需自行安排。企业另建任务、部署脚本和备份需单独管理。完整说明见官方卸载指引。
找不到原始私钥时重新签发
有匹配私钥时按第一步导入,不执行本节。确实找不到时,先安排换证时间:重颁发可能使旧证书失效,新材料签发后需及时部署。
首次接管订单时执行:
bash
certiman issue --reuse-order YOUR_ORDER_ID --on-existing-cert reissue已由本机 CLI 管理的订单使用原配置:
bash
certiman issue -d trustasia.com --on-existing-cert reissue按接入状态选择一种,域名替换为订单主域名。签发后回到第一步确认材料,再按第四、第五步部署并验收。部署异常按本文异常恢复处理;重颁发可能使旧证书失效,不能保证恢复旧备份即可恢复访问,应及时部署新证书。
