Справочник по конфигурации
Поведение 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
Подходит для сценариев, где используются PEM-файлы, например nginx, Apache HTTP Server, Tomcat:
| Поле | Описание |
|---|---|
cert_path | Путь к файлу сертификата сайта. При обновлении записывается листовой сертификат; если ca_path пуст, одновременно записывается полная цепочка сертификатов |
ca_path | Путь к файлу цепочки ЦС, может быть пустым |
key_path | Путь к файлу закрытого ключа |
pfx
Подходит для служб, которым требуется единый файл пакета сертификатов (PKCS#12):
| Поле | Описание |
|---|---|
path | Путь к файлу PFX |
key_pass | Пароль закрытого ключа PFX; можно оставить пустым, если целевая служба не требует пароль |
jks
Подходит для сценариев Java keystore, например Tomcat:
| Поле | Описание |
|---|---|
path | Путь к файлу JKS |
alias | Псевдоним записи сертификата. Если пусто, автоматически определяется только при наличии в keystore одной записи |
key_pass | Пароль закрытого ключа записи |
store_pass | Пароль keystore |
iis
Подходит для привязки Windows IIS HTTPS:
| Поле | Описание |
|---|---|
name | Имя сайта IIS, можно посмотреть в диспетчере IIS |
addr | IP привязки HTTPS, * означает все 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 }} | IP-адрес привязки HTTPS |
| iis | {{ .IIS_PORT }} | Порт привязки HTTPS |
| iis | {{ .IIS_DOMAIN }} | Привязка домена по HTTPS |
| exchange | {{ .EXCHANGE_SERVICES }} | Список имен служб Exchange (через запятую) |
Рекомендации по безопасности
config.yamlсодержит учетные данные доступа и путь к закрытому ключу; ограничьте права на этот файл так, чтобы чтение и запись были доступны только учетной записи, под которой выполняется запуск (например,chmod 600 config.yaml).AccessSecretпосле сохранения хранится в зашифрованном виде, но все же не следует копировать файл конфигурации в ненадежные расположения.- Используйте для clmBot выделенную учетную запись запуска и предоставляйте права по принципу минимальных привилегий; см. Требования к правам запуска.