跳到主要内容
版本:V2.2.0

配置参考

clmBot 的行为由安装目录下的 config.yaml 配置文件控制。该文件在执行 logindiscover-certificateadd-server 时自动生成,也可以手动编辑。

默认情况下 clmBot 从当前目录读取 config.yaml,也可以通过全局参数 -c 指定配置文件路径:

./clm-bot-linux-amd64 -c /opt/clm-bot/config.yaml update-certificate

总体结构

app:
base_url: https://<云端地址>
ignore_ssl: false
access_key: YOUR_ACCESS_KEY
access_secret: YOUR_ACCESS_SECRET

servers:
- id: nginx_pem
sub_code: <证书订阅号>
format:
pem:
cert_path: /etc/nginx/ssl/example.com.crt
ca_path: /etc/nginx/ssl/example.com.ca.crt
key_path: /etc/nginx/ssl/example.com.key
before_script: |
...
after_script: |
nginx -t && nginx -s reload

app:接入配置

字段说明
base_url云端 API 地址,按交付信息填写,一般无需修改
ignore_ssl是否忽略 HTTPS 证书校验。仅在使用自签名证书的受控环境中启用
access_key云端分配的 AccessKey
access_secret云端分配的 AccessSecret。明文首次被程序保存后,会自动迁移为 ENC1+ 开头的加密值

servers:安装点列表

每个 servers[] 条目对应一个证书安装点:

字段说明
id安装点标识,建议使用有业务含义的名称
sub_code证书订阅号,对应管理后台中的证书订阅,clmBot 按它获取最新证书
format证书格式及文件路径,只能保留 pempfxjksiisexchange 中的一种
before_script更新前执行的脚本,脚本失败会中断当前安装点的更新
after_script更新后执行的脚本,通常用于重载中间件服务

format:证书格式

pem

适用于 nginx、Apache HTTP Server、Tomcat 等使用 PEM 文件的场景:

字段说明
cert_path站点证书文件路径。更新时写入叶子证书;如果 ca_path 为空,则同时写入完整证书链
ca_pathCA 链文件路径,可为空
key_path私钥文件路径

pfx

适用于需要单文件证书包(PKCS#12)的服务:

字段说明
pathPFX 文件路径
key_passPFX 私钥密码,目标服务不要求密码时可留空

jks

适用于 Tomcat 等 Java keystore 场景:

字段说明
pathJKS 文件路径
alias证书条目别名。为空时,仅在 keystore 只有一个条目时可自动推断
key_pass条目私钥密码
store_passkeystore 密码

iis

适用于 Windows IIS HTTPS 绑定:

字段说明
nameIIS 站点名称,可在 IIS 管理器中查看
addrHTTPS 绑定 IP,* 表示所有 IP
portHTTPS 绑定端口
domainHTTPS 绑定域名,无 SNI 域名时可留空

IIS 安装点由 clmBot 内置脚本自动完成证书导入和绑定更新,通常无需配置脚本。

exchange

适用于 Windows Exchange 服务证书:

字段说明
services需要启用新证书的 Exchange 服务名称列表,如 ["IIS", "SMTP", "POP", "IMAP"]

脚本执行说明

before_scriptafter_script 在证书更新时按以下顺序执行:

  1. 备份本地证书文件(生成带时间戳的 .bak 备份)。
  2. 执行 before_script,失败则中断当前安装点的更新。
  3. 写入新证书。
  4. 执行 after_script,重载或重启中间件服务。

本地证书已是最新时,整个更新(包括脚本)会跳过;如需强制执行 after_script,可使用 --force-after 参数。

脚本在 Linux 上通过 bash 执行,在 Windows 上通过 powershell.exe -NoProfile -ExecutionPolicy Bypass 执行。

脚本模板变量

编写 before_script / after_script 时,可以使用以下模板变量,clmBot 会在执行前替换为实际值。

通用变量:

变量说明
{{ .ID }}安装点 id
{{ .SUB_CODE }}证书订阅号
{{ .OS_TYPE }}操作系统类型(windows / linux / darwin
{{ .IS_WINDOWS }}是否 Windows(true / false
{{ .IS_LINUX }}是否 Linux(true / false
{{ .TIMESTAMP }}当前时间戳(秒)
{{ .DATETIME }}当前日期时间(2006-01-02 15:04:05 格式)
{{ .DATE }}当前日期(2006-01-02 格式)
{{ .LATEST }}证书是否已是最新(true / false)。配合 --force-after 使用时,可在脚本中判断跳过后续操作

按证书格式提供的变量:

格式变量说明
pem{{ .PEM_CERT_PATH }}站点证书文件路径
pem{{ .PEM_CA_PATH }}CA 链文件路径
pem{{ .PEM_KEY_PATH }}私钥文件路径
pfx{{ .PFX_PATH }}PFX 文件路径
pfx{{ .PFX_KEY_PASS }}PFX 私钥密码
jks{{ .JKS_PATH }}JKS 文件路径
jks{{ .JKS_ALIAS }}证书条目别名
jks{{ .JKS_KEY_PASS }}条目私钥密码
jks{{ .JKS_STORE_PASS }}keystore 密码
iis{{ .IIS_SITE_NAME }}IIS 站点名称
iis{{ .IIS_IPADDR }}HTTPS 绑定 IP
iis{{ .IIS_PORT }}HTTPS 绑定端口
iis{{ .IIS_DOMAIN }}HTTPS 绑定域名
exchange{{ .EXCHANGE_SERVICES }}Exchange 服务名称列表(逗号分隔)

安全建议

  • config.yaml 包含接入凭证和私钥路径,请将其文件权限限制为仅运行账号可读写(如 chmod 600 config.yaml)。
  • AccessSecret 保存后会以加密形式存储,但仍应避免将配置文件复制到不受信任的位置。
  • 为 clmBot 使用专用运行账号并按最小权限授权,参见 运行权限要求