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

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

Описание

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

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

Сценарий с локальным УЦ применяется для учебных, тестовых и временных стендов и обеспечивает полный набор сертификатов, необходимых для развертывания кластера 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)».