跳至主要内容

配置參考

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_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_script 和 after_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 使用專用運行帳號並按最小權限授權,參見 運行權限要求。