Skip to content

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”,无需重复申请订单。

CertCloud 订单中的 CertiMan 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 输出的授权地址。

CertiMan 浏览器登录授权确认

在 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: false
  • fullchain_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 时,继续使用原网址中的端口。

  1. 确认打开的是自己的网站,浏览器没有“连接不安全”或证书错误提示。
  2. 点击地址栏左侧的网站信息按钮,进入连接信息并查看证书,确认域名正确、有效期与 CertCloud 订单中本次部署的证书一致。
  3. 浏览常用页面,确认图片、样式和登录等功能正常。

使用 CDN 等代理时,浏览器可能显示代理服务的证书,按证书检查说明核对 Apache 上的证书。 检查通过后继续第六步;出现证书错误或网站无法访问时,先按本文异常恢复处理。

第六步:开启计划任务 ​

验收通过后,修改原 renew 节点:

yaml
renew:
  auto_cert: true
  auto_order: false

auto_cert 开启订单服务期内自动续期,auto_order: false 不自动续订订单。保留验证记录或维护 DNS Hook。尚未注册系统计划任务时,在同一账号下执行:

bash
certiman cron install
certiman cron status

CLI 注册的系统计划任务定期运行 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

按接入状态选择一种,域名替换为订单主域名。签发后回到第一步确认材料,再按第四、第五步部署并验收。部署异常按本文异常恢复处理;重颁发可能使旧证书失效,不能保证恢复旧备份即可恢复访问,应及时部署新证书。

参考文档 ​

参考链接 ​