配置与更新

自动更新与服务重载

update-certificate 的更新流程:脚本审核、.bak 证书备份、服务重载与成功/失败/回滚日志检查。

最后检查: 2026-08-09语言: 简体中文

本文说明 clmbot 执行证书更新时的完整行为:更新命令、前后脚本、旧证书备份、服务重载与日志检查。

update-certificate 命令

./clm-bot-linux-amd64 update-certificate

该命令依次完成:

  1. 检查:向上游检查是否有新的证书;
  2. 抓取:发现新证书后自动抓取到服务器;
  3. 备份:替换前将旧证书备份为 .bak 文件(备份文件位于证书所在目录);
  4. 替换:将新证书写入 config.yamlservers[] 定义的路径;
  5. 重载:执行 after_script 脚本(如服务重载),使新证书生效。

没有新证书时命令正常结束、不做任何变更。该命令既可手动执行,也可由定时拉取的计划任务周期执行。

before_script 与 after_script 审核要求

  • before_script 在证书替换执行,用于准备工作;
  • after_script 在证书替换执行,通常是中间件的 reload/restart 命令(如 nginx -t && nginx -s reload)。

审核要求(必须遵守):

  • 所有脚本内容在启用前必须经过人工逐行审计;
  • 脚本以 clmbot 运行账号权限执行,需要提权的命令通过 sudoers 精确授权(见最小权限);
  • 禁止在脚本中调用不受限的 bashpowershell.exe 或完整 systemctl 权限;
  • 脚本中不得包含明文凭证。

证书备份与回滚

  • 每次替换前旧证书自动备份为 .bak,clmbot 运行账号需要在证书目录具有创建和清理 .bak 的权限;
  • 如果新证书导致服务异常,可用 .bak 文件手动恢复旧证书并重载服务;
  • 当前公开文档只规定 .bak 手工恢复流程,不应假设程序会自动回滚。

服务重载

服务重载由 after_script 完成,各中间件的推荐命令与最小授权方式见最小权限

  • Nginx:nginx -t && nginx -s reload
  • Apache:systemctl restart httpd.servicesystemctl restart apache2.service(取决于发行版);
  • Tomcat:执行对应实例的 shutdown.shstartup.sh
  • IIS:通过 PowerShell 脚本导入 PFX 并更新 HTTPS 绑定。

成功、失败与回滚日志

  • 更新日志默认追加写入运行目录下的 update.log(定时任务示例中通过 >> update.log 重定向);
  • 请定期检查日志,确认每次执行的结果:是否检测到新证书、替换是否成功、after_script 是否正常执行;
  • 更新失败时优先检查日志中的报错,再对照故障排查逐项排除;
  • 日志格式可能随版本变化,判断结果时应结合命令退出状态、终端输出和服务检查结果;
  • 日志可能包含主机名、路径等敏感信息,对外提供日志前请先脱敏(见安全)。

相关页面