跳至主要内容

配置參考

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