配置參考
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 使用專用執行帳號並按最小權限授權,參見 執行權限要求。