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

Данный раздел описывает добавление собственных truststore и сертификатов в компоненты Keycloak, Traefik и сервисы PAM, работающие по mTLS.

Добавление truststore в Keycloak

  1. Поместите файлы keystore формата .jks, .p12 в Keycloak в каталог ${PROJECT_DIR}/volumes/keycloak/truststore/.

    PKCS#12-файл должен быть без пароля — это ограничение Keycloak.

  2. Добавьте привязку в docker-compose. Для этого откройте:

    sudo nano docker-compose.yml
  3. Найдите volume-binding или создайте, если его нет. После блока terraform_keys добавьте для web-auth:

    - type: bind source: ./volumes/keycloak/truststore target: /opt/keycloak/conf/truststores read_only: false bind: create_host_path: false
  4. Перезапустите контейнеры:

    sudo docker compose down sudo docker compose up -d

Добавление сертификатов в LB Traefik

  1. Добавьте нужные сертификаты (cert + key) в ${PROJECT_DIR}/volumes/traefik/certs-custom.

  2. Добавьте привязку в docker-compose. Для этого откройте:

    sudo nano docker-compose.yml
  3. Найдите volume-binding или создайте, если его нет. После блока terraform_certs добавьте для traefik:

    - type: bind source: ./volumes/traefik/certs-custom target: /bpam/volumes/traefik-certs-custom read_only: true bind: create_host_path: false
  4. Обновите конфигурацию Traefik. Откройте:

    sudo nano ./volumes/traefik/etc/traefik/000-default.yml
  5. Замените путь /bpam/volumes/certs/ и названия файлов на актуальные:

    defaultCertificate: certFile: /bpam/volumes/traefik-certs-custom/my-cert.pem keyFile: /bpam/volumes/traefik-certs-custom/my-key.key
  6. Перезапустите контейнеры:

    sudo docker compose down sudo docker compose up -d

Traefik обновлен и использует ваши сертификаты.

Обновление CA для межсервисных запросов (mTLS)

Подготовьте корневой сертификат организации в виде ca.pem. Для сервисов, которые используют mTLS, сертификаты располагаются по пути /bpam/volumes/certs.

В случае замены сертификатов для сервисов, например Vault, используйте корневой сертификат ca.pem и поместите CA и сертификат с ключом в сам сервис через volume binding.

Пример для сервиса worker-ssh:

  1. Откройте docker-compose.yml и добавьте запись вида:

    sudo nano docker-compose.yml
    services: ... worker-ssh: ... volumes: ... # Новый CA - type: bind source: ./volumes/certs/ca.pem target: /bpam/volumes/certs/ca.pem read_only: true bind: create_host_path: false
  2. Откройте файл окружения и проверьте значения для сертификатов:

    sudo nano worker-ssh.env
    CONTROL_GRPC_AUTH_USE_MTLS=true CONTROL_GRPC_AUTH_CA_CERT=/opt/bpam/certs/ca.pem
    • Если вы используется для Traefik собственные сертификаты, мы рекомендуем заменить CA для сервисов worker-ssh, worker-rdp-proxy, worker-rdp-ctl.

    • При выпуске сертификатов для сервисов выше, добавьте

      alt-dns-name control-<pam hostname> вместе с <pam-hostname>

  3. Перезапустите контейнеры:

    sudo docker compose down sudo docker compose up -d