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

Генерация сертификатов с использованием локального удостоверяющего центра

Описание​

При отсутствии внешнего или корпоративного удостоверяющего центра допускается использование локального самоподписанного удостоверяющего центра (УЦ).

Данный раздел описывает альтернативный сценарий генерации сертификатов. Базовый процесс подготовки сертификатов приведен в разделе «Генерация сертификатов».

Сценарий с локальным УЦ применяется для учебных, тестовых и временных стендов и обеспечивает полный набор сертификатов, необходимых для развертывания кластера Pangolin.

В рамках данного подхода администратор выполняет:

  • генерацию корневого сертификата УЦ;
  • генерацию запросов на сертификаты (CSR) для серверов и клиентов;
  • подпись сертификатов локальным УЦ;
  • установку и регистрацию корневого сертификата в системе.

Настройка​

Генерация корневого сертификата УЦ​

Корневой сертификат удостоверяющего центра является единым для всех узлов кластера и используется для подписи серверных и клиентских сертификатов.

  1. Сгенерировать закрытый ключ УЦ:

    openssl genpkey -algorithm RSA -out root.key
  2. Сгенерировать самоподписанный корневой сертификат:

    openssl req -x509 -new -days 3650 \
    -key root.key \
    -out root.crt \
    -extensions v3_ca \
    -subj "/C=RU/O=Pangolin/CN=Pangolin-Local-CA"

В результате формируются файлы:

  • root.key — закрытый ключ УЦ;
  • root.crt — корневой сертификат УЦ.

Корневой сертификат должен быть доступен на всех узлах кластера.

Подпись сертификатов локальным УЦ​

После генерации запросов на сертификаты (*.csr) они подписываются корневым сертификатом УЦ.

Пример подписи серверного сертификата:

openssl x509 -req -days 1800 \
-in server.csr \
-CA root.crt \
-CAkey root.key \
-CAcreateserial \
-out server.crt \
-extfile server.conf \
-extensions ssl_client

Пример подписи клиентского сертификата:

openssl x509 -req -days 1800 \
-in postgres.csr \
-CA root.crt \
-CAkey root.key \
-CAcreateserial \
-out postgres.crt \
-extfile client.conf

Аналогичным образом подписываются сертификаты для Patroni (ядро Pangolin Manager), patronietcd и Pangolin Pooler.

Регистрация корневого сертификата УЦ​

Для корректной работы компонентов Pangolin корневой сертификат удостоверяющего центра необходимо зарегистрировать в системном хранилище доверенных сертификатов:

sudo cp root.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust

Управление​

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

  • контроль сроков действия серверных и клиентских сертификатов;
  • плановый перевыпуск сертификатов и повторную подпись CSR;
  • замену сертификатов на узлах кластера;
  • актуальность зарегистрированного корневого сертификата в системе.

Автоматическая ротация сертификатов в данном сценарии не используется.

Диагностика​

Для проверки корректности выпущенных сертификатов рекомендуется использовать:

Проверка содержимого сертификата:

openssl x509 -in server.crt -text -noout

Проверка цепочки доверия:

openssl verify -CAfile root.crt server.crt

Проверка регистрации корневого сертификата в системе:

trust list | grep Pangolin-Local-CA

Использование​

Сертификаты, выпущенные локальным удостоверяющим центром, используются компонентами кластера Pangolin для установки TLS/SSL-соединений:

  • серверные сертификаты — PostgreSQL, Pangolin Pooler, etcd;
  • клиентские сертификаты — сервисные учетные записи и компоненты кластера.

Для промышленных стендов рекомендуется использовать внешние или корпоративные удостоверяющие центры либо централизованное управление сертификатами через Secret Management System (SecMan), описанное в разделе «Управление сертификатами через SecMan (PKCS#12)».