配置参考
clmBot 的行为由安装目录下的 config.yaml 配置文件控制。该文件在执行 login、discover-certificate 或 add-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 | 证书格式及文件路径,只能保留 pem、pfx、jks、iis、exchange 中的一种 |
before_script | 更新前执行的脚本,脚本失败会中断当前安装点的更新 |
after_script | 更新后执行的脚本,通常用于重载中间件服务 |
format:证书格式
pem
适用于 nginx、Apache HTTP Server、Tomcat 等使用 PEM 文件的场景:
| 字段 | 说明 |
|---|---|
cert_path | 站点证书文件路径。更新时写入叶子证书;如果 ca_path 为空,则同时写入完整证书链 |
ca_path | CA 链文件路径,可为空 |
key_path | 私钥文件路径 |
pfx
适用于需要单文件证书包(PKCS#12)的服务:
| 字段 | 说明 |
|---|---|
path | PFX 文件路径 |
key_pass | PFX 私钥密码,目标服务不要求密码时可留空 |
jks
适用于 Tomcat 等 Java keystore 场景:
| 字段 | 说明 |
|---|---|
path | JKS 文件路径 |
alias | 证书条目别名。为空时,仅在 keystore 只有一个条目时可自动推断 |
key_pass | 条目私钥密码 |
store_pass | keystore 密码 |
iis
适用于 Windows IIS HTTPS 绑定:
| 字段 | 说明 |
|---|---|
name | IIS 站点名称,可在 IIS 管理器中查看 |
addr | HTTPS 绑定 IP,* 表示所有 IP |
port | HTTPS 绑定端口 |
domain | HTTPS 绑定域名,无 SNI 域名时可留空 |
IIS 安装点由 clmBot 内置脚本自动完成证书导入和绑定更新,通常无需配置脚本。
exchange
适用于 Windows Exchange 服务证书:
| 字段 | 说明 |
|---|---|
services | 需要启用新证书的 Exchange 服务名称列表,如 ["IIS", "SMTP", "POP", "IMAP"] |
脚本执行说明
before_script 和 after_script 在证书更新时按以下顺序执行:
- 备份本地证书文件(生成带时间戳的
.bak备份)。 - 执行
before_script,失败则中断当前安装点的更新。 - 写入新证书。
- 执行
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 使用专用运行账号并按最小权限授权,参见 运行权限要求。