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

Примеры конфигурации

На этой странице представлены полные примеры конфигурации для распространённых комбинаций «ПО промежуточного слоя × формат сертификата». Каждый пример состоит из двух частей: конфигурация монтирования сертификата на стороне сервиса и конфигурация точки установки clmBot config.yaml.

Пути в примерах являются демонстрационными значениями, замените их на пути из фактического окружения. Значения полей см. в Справочнике по конфигурации.

nginx + PEM

Конфигурация сертификата на стороне сервиса

В конфигурации сайта nginx смонтируйте сертификат с помощью ssl_certificate и ssl_certificate_key:

server {
listen 443 ssl;
server_name example.com;

ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;

location / {
root /usr/share/nginx/html;
}
}
Информация

nginx требует, чтобы файл ssl_certificate содержал полную цепочку сертификатов (сертификат сайта + промежуточный сертификат). Поэтому в точке установки clmBot рекомендуется оставить ca_path пустым, и clmBot объединит полную цепочку сертификатов и запишет её в cert_path.

Настройка точки установки clmBot

servers:
- id: nginx_pem
sub_code: <证书订阅号>
format:
pem:
cert_path: /etc/nginx/ssl/example.com.crt
ca_path: ""
key_path: /etc/nginx/ssl/example.com.key
after_script: |
nginx -t && nginx -s reload

Apache + PEM

Настройка сертификата на стороне сервера

В конфигурации сайта Apache подключите сертификат с помощью директив, таких как SSLCertificateFile:

<VirtualHost *:443>
ServerName example.com

SSLEngine on
SSLCertificateFile /etc/httpd/ssl/example.com.crt
SSLCertificateKeyFile /etc/httpd/ssl/example.com.key
SSLCertificateChainFile /etc/httpd/ssl/example.com.ca.crt
</VirtualHost>
Информация
  • В Apache 2.4.8 и выше цепочку сертификатов также можно объединить непосредственно в файл SSLCertificateFile, при этом SSLCertificateChainFile можно опустить, а ca_path в точке установки clmBot соответственно оставить пустым.
  • Имя службы выбирается в зависимости от дистрибутива: для RHEL/CentOS — httpd, для Debian/Ubuntu — apache2.

Настройка точки установки clmBot

servers:
- id: apache_pem
sub_code: <证书订阅号>
format:
pem:
cert_path: /etc/httpd/ssl/example.com.crt
ca_path: /etc/httpd/ssl/example.com.ca.crt
key_path: /etc/httpd/ssl/example.com.key
after_script: |
apachectl configtest && systemctl restart httpd.service

Tomcat + JKS

Настройка серверного сертификата

Tomcat версии 8.5 и выше подключает JKS-хранилище ключей через SSLHostConfig в conf/server.xml:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="/opt/tomcat/conf/example.com.jks"
certificateKeystorePassword="<keystore密码>"
certificateKeyAlias="tomcat"
certificateKeyPassword="<私钥密码>"
type="RSA" />
</SSLHostConfig>
</Connector>

Настройка точки установки clmBot

servers:
- id: tomcat_jks
sub_code: <证书订阅号>
format:
jks:
path: /opt/tomcat/conf/example.com.jks
alias: tomcat
key_pass: <私钥密码>
store_pass: <keystore密码>
after_script: |
export JAVA_HOME=/usr/java
/opt/tomcat/bin/shutdown.sh
/opt/tomcat/bin/startup.sh
Информация

Если Tomcat управляется через systemd, after_script можно упростить до systemctl restart <tomcat 服务名>.

Tomcat + PEM

Настройка серверного сертификата

Tomcat 8.5 и выше поддерживает прямое использование PEM-файлов без преобразования в JKS:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeyFile="/opt/tomcat/ssl/example.com.key"
certificateFile="/opt/tomcat/ssl/example.com.crt"
certificateChainFile="/opt/tomcat/ssl/example.com.ca.crt"
type="RSA" />
</SSLHostConfig>
</Connector>

Настройка точки установки clmBot

servers:
- id: tomcat_pem
sub_code: <证书订阅号>
format:
pem:
cert_path: /opt/tomcat/ssl/example.com.crt
ca_path: /opt/tomcat/ssl/example.com.ca.crt
key_path: /opt/tomcat/ssl/example.com.key
after_script: |
export JAVA_HOME=/usr/java
/opt/tomcat/bin/shutdown.sh
/opt/tomcat/bin/startup.sh

Пользовательская служба + PFX

Подходит для служб, использующих сертификат в виде единого файла-контейнера (PKCS#12), в after_script можно использовать переменные шаблона сценария:

servers:
- id: app_pfx
sub_code: <证书订阅号>
format:
pfx:
path: /opt/app/ssl/example.com.pfx
key_pass: <PFX密码>
after_script: |
echo "certificate updated at {{ .DATETIME }}"
/usr/bin/systemctl restart example-app.service

Проверка

После завершения настройки можно вручную запустить обновление для проверки всего процесса:

./clm-bot-linux-amd64 update-certificate

Убедившись, что файлы сертификата обновлены, служба перезагружена и новый сертификат вступил в силу, настройте автоматическое обновление согласно способу обновления сертификата.