Прописать сертификаты в зеркало
На этой странице
Для работы с сертификатами в зеркале можно:
- импортировать свой сертификат можно на этапе инициализации зеркала в закрытом контуре (init, make);
- импортировать свой сертификат на этапе развертывания nginx для внешнего nexus в закрытом контуре;
- применить отдельной командой
stm cert import
, в которую необходимо подставить свои значения параметров.
Команды и доступные параметры для работы с сертификатами
Команда | Описание команды | Параметр | Описание параметра |
---|---|---|---|
stm cert import | Импорт сертификата (приведет к перезапуску зеркала) | --cert-file | Файл сертификата для импорта |
--privkey-file | Файл ключа для импорта | ||
stm cert csr | Сформировать запрос на получение сертификата | --fqdn | Адрес, на который будет сгенерирован запрос |
Примеры:
Команда формирования запроса на получение сертификата
# csr и ключ будут находиться в каталоге export
stm cert csr --fqdn=mirror.corpdomain.ru
Команда выпуска сертификата, используя CSR и свой CA (для openssl)
openssl x509 -req -sha512 -in export/csr.pem -days 3650 -CA ca/ca_cert.pem -CAkey ca/ca_private_key.pem -CAcreateserial -out export/mirror_cert.pem -copy_extensions copyall
# Добавить к полученному сертификату свой CA
cat ca/ca_cert.pem >> export/mirror_cert.pem
Команда импорта сертификата, когда зеркало уже инициализировано
Выполнение команды приведет к перезапуску зеркала
stm cert import --cert-file export/mirror_cert.pem --privkey-file export/privkey.pem
Требование к сертификату
- Для импорта необходимо указать файл с цепочкой сертификатов и ключом;
- Сертификаты и ключ должны быть в pem формате;
- Цепочка сертификатов должна содержать ca и сам сертификат;
- Сертификат должен содержать поле subjectAltName с fqdn зеркала (fqdn должен совпадать с указанным параметром –fqdn или со значением в конфигурации зеркала) или wildcard доменом (должен совпадать с доменом зеркала);
- При выпуске сертификата, используя CSR, необходимо сохранить Extensions (для openssl ключ
-copy_extensions
copyall).
Получение сертификата с Acme сервера (step-ca)
Самостоятельно модуль управление зеркалом не поддерживает работу с Acme сервером. Есть возможность настроить получение сертификата с Acme при помощи certbot. Для этого необходимо:
- Остановить контейнер с зеркалом
Команда
podman stop shturval_proxy
или
stm stop
- Запросить сертификат
Команда
REQUESTS_CA_BUNDLE=ПУТЬ_ДО_КОРНЕВОГО_СЕРТИФИКАТА certbot certonly -d FQDN_СЕРТИФИКАТА --server АДРЕС_ACME_СЕРВЕРА --standalone --agree-tos -m EMAIL
Пример
REQUESTS_CA_BUNDLE=/home/shturval/root_ca.crt certbot certonly -d mirror.ip-10-11-12-132.shturval.link --server https://issuer.ip-10-11-12-3.shturval.link:9443/acme/acme/directory --standalone --agree-tos -m user@chislitellab.ru
- Скопировать сертификаты в каталог зеркала
Команда
cp /etc/letsencrypt/live/FQDN_СЕРТИФИКАТА/fullchain.pem ПУТЬ_ДО_ЗЕРКАЛА/config/certs/dst.pem
cp /etc/letsencrypt/live/FQDN_СЕРТИФИКАТА/fullchain.pem ПУТЬ_ДО_ЗЕРКАЛА/config/certs/fullchain.pem
cp /etc/letsencrypt/live/FQDN_СЕРТИФИКАТА/privkey.pem ПУТЬ_ДО_ЗЕРКАЛА/config/certs/privkey.pem
#Пример
cp /etc/letsencrypt/live/mirror.ip-10-31-145-132.shturval.link/fullchain.pem /home/shturval/shturval-mirror/config/certs/dst.pem
cp /etc/letsencrypt/live/mirror.ip-10-31-145-132.shturval.link/fullchain.pem /home/shturval/shturval-mirror/config/certs/fullchain.pem
cp /etc/letsencrypt/live/mirror.ip-10-31-145-132.shturval.link/privkey.pem /home/shturval/shturval-mirror/config/certs/privkey.pem
- Запустить зеркало
Команда
podman start shturval_proxy
или
stm start
- Удалить задания, созданные Certbot
Команда
systemctl stop certbot.timer
systemctl disable certbot.timer
- Добавить в задания (cron, systemd timer) скрипт обновления сертификата (предварительно отредактировав под свою инсталляцию)
Команда
#!/bin/bash
#Отредактировать значения под свою инсталляцию
REQUESTS_CA_BUNDLE=/home/shturval/root_ca.crt #Путь до файла корневого сертификата
DIRECTORY_URL=https://issuer.ip-10-11-12-3.shturval.link:9443/acme/acme/directory #Адрес Acme сервера
DOMAIN_NAME=mirror.ip-10-11-12-132.shturval.link #Имя, на которое выписывается сертификат
MIRROR_PATH=/home/shturval/shturval-mirror #Путь до каталога с зеркалом
#Редактировать, только если менялись значения по умолчанию
NGINX_CONTAINER_NAME=shturval_proxy #Имя контейнера с nginx
PODMAN_BIN=/usr/local/bin/podman #Путь до podman
${PODMAN_BIN} stop ${NGINX_CONTAINER_NAME}
REQUESTS_CA_BUNDLE=$REQUESTS_CA_BUNDLE certbot -q renew --server ${DIRECTORY_URL}
cp -f /etc/letsencrypt/live/${DOMAIN_NAME}/fullchain.pem ${MIRROR_PATH}/config/certs/dst.pem
cp -f /etc/letsencrypt/live/${DOMAIN_NAME}/fullchain.pem ${MIRROR_PATH}/config/certs/fullchain.pem
cp -f /etc/letsencrypt/live/${DOMAIN_NAME}/privkey.pem ${MIRROR_PATH}/config/certs/privkey.pem
${PODMAN_BIN} start ${NGINX_CONTAINER_NAME}