Перейти к основному содержимому

Справочник по конфигурации

Поведение 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_keyAccessKey, выданный в облаке
access_secretAccessSecret, выданный в облаке. После первого сохранения открытого текста программой он будет автоматически преобразован в зашифрованное значение с префиксом 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
addrIP привязки HTTPS, * означает все IP
portПорт привязки HTTPS
domainДомен привязки HTTPS, при отсутствии домена 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 }}IP-адрес привязки HTTPS
iis{{ .IIS_PORT }}Порт привязки HTTPS
iis{{ .IIS_DOMAIN }}Привязка домена по HTTPS
exchange{{ .EXCHANGE_SERVICES }}Список имен служб Exchange (через запятую)

Рекомендации по безопасности

  • config.yaml содержит учетные данные доступа и путь к закрытому ключу; ограничьте права на этот файл так, чтобы чтение и запись были доступны только учетной записи, под которой выполняется запуск (например, chmod 600 config.yaml).
  • AccessSecret после сохранения хранится в зашифрованном виде, но все же не следует копировать файл конфигурации в ненадежные расположения.
  • Используйте для clmBot выделенную учетную запись запуска и предоставляйте права по принципу минимальных привилегий; см. Требования к правам запуска.