Корневой сертификат: как настроить доверие к внутреннему центру сертификации
Если серверы, к которым Pyrus обращается по HTTPS (боты, почтовые серверы, SSO, S3-хранилище), используют сертификаты вашего внутреннего центра сертификации (CA), Pyrus должен доверять этому центру сертификации. Иначе он не сможет подключиться к этим серверам: запросы будут завершаться ошибкой проверки сертификата.
Сертификат добавляется в настройки Pyrus Datacenter, поэтому при обновлении он сохраняется.
Подготовьте сертификат
Нужен корневой сертификат центра сертификации в формате PEM — текстовый файл, который начинается со строки -----BEGIN CERTIFICATE-----.
Обратите внимание: одного промежуточного сертификата недостаточно, в файле обязательно должен быть корневой.
Если в цепочке есть промежуточные центры сертификации, добавьте их сертификаты в тот же файл после корневого:
cat root-ca.crt issuing-ca.crt > corp-root-ca.crt
Если сертификат в двоичном формате DER (файл .cer без текстового заголовка), преобразуйте его:
openssl x509 -inform der -in corp-root-ca.cer -out corp-root-ca.crt
Установка через Docker Compose
Все команды выполняйте на сервере Pyrus в папке, где находится docker-compose.yml.
Положите сертификат в папку
certsи разрешите всем пользователям его читать: сервисы Pyrus работают без прав администратора.mkdir -p certs cp corp-root-ca.crt certs/corp-root-ca.crt chmod 644 certs/corp-root-ca.crt
Рядом с
docker-compose.ymlсоздайте файлdocker-compose.override.:yml x-corp-ca: &corp-ca volumes: - ./certs/corp-root-ca.crt:/etc/ssl/certs/corp-root-ca.pem:ro services: web-api: *corp-ca async-worker: *corp-ca files: *corp-ca identity-server: *corp-ca bind: *corp-ca mail-reader: *corp-ca mail-sender: *corp-ca notification-service: *corp-ca pyrus-schedule-to-today: *corp-ca preview: *corp-ca pyrus-setup: *corp-ca elastic-console: *corp-ca familiar: *corp-ca stt-service: *corp-ca goskey: *corp-caНа серверах с включённым SELinux (RHEL, CentOS, Rocky Linux) замените в строке под
volumesокончание:roна:ro,z.Docker Compose учитывает этот файл автоматически. При обновлении Pyrus вы заменяете только
docker-compose.yml, поэтому настройка сохраняется.Обратите внимание: в файле
docker-compose.override.должны быть только сервисы, которые есть в вашемyml docker-compose.yml. Иначе Docker Compose не запустится и выдаст ошибкуservice "..." has neither an image nor a build context specified.Посмотреть список сервисов можно командой:
docker compose --profile all config --services
Пересоздайте контейнеры:
docker compose up -d
Убедитесь, что сертификат виден внутри контейнера:
docker exec pyrus-web-api head -1 /etc/ssl/certs/corp-root-ca.pem
Команда должна вывести
-----BEGIN CERTIFICATE-----.
Подсказка: если вы запускаете Docker Compose с явным указанием файла (docker compose -f docker-compose.yml ...), файл docker-compose.override. не будет учтён. Укажите его явно: docker compose -f docker-compose.yml -f docker-compose.override..
Установка в Kubernetes
Нужен Helm-чарт pyrus-datacenter версии 2.0.40 или новее. Текущую версию показывает колонка CHART в выводе команды:
helm -n pyrus list
В примерах ниже пространство имён (namespace) — pyrus, имя релиза — pyrus-datacenter. Если у вас они другие, подставьте свои.
Добавьте сертификат в файл values, который вы передаёте при каждом
helm upgrade. Чарт сам создаст Secret и подключит файл к сервисам Pyrus:defaults: secretRef: "/etc/ssl/certs": corp-root-ca.pem: | -----BEGIN CERTIFICATE----- ...содержимое corp-root-ca.crt... -----END CERTIFICATE-----Все строки сертификата должны иметь одинаковый отступ. Если в файле уже есть раздел
defaults, добавьтеsecretRefв него.Обратите внимание: не называйте файл
ca-certificates.crt— так вы замените системный набор сертификатов целиком.Примените изменения своей обычной командой обновления. Укажите текущую версию чарта, чтобы вместе с настройками не обновился сам чарт:
helm -n pyrus upgrade pyrus-datacenter pyrus-datacenter-k8s/pyrus-datacenter \ -f pyrus.values.yaml \ --version <текущая версия чарта> \ --reset-values
Убедитесь, что сертификат виден внутри пода:
kubectl -n pyrus exec deploy/pyrus-web-api -- head -1 /etc/ssl/certs/corp-root-ca.pem
Команда должна вывести
-----BEGIN CERTIFICATE-----.
Обратите внимание: при обновлении с флагом --reset-values всегда передавайте файл values с сертификатом. Без него чарт удалит сертификат, и Pyrus снова перестанет доверять вашему центру сертификации.