Перейти к основному содержимому
Версия: 5.0

Генерация сертификатов для компонентов Smart Monitor

На этом этапе создаются новые сертификаты для всех узлов и сервисов системы, обеспечивающих защищённое соединение.

Основные требования

  • Используется корневой сертификат ca-cert.pem и соответствующий приватный ключ ca-key.pem для подписи новых сертификатов или один из промежуточных центров сертификации. В примерах дальше будет использоваться корневой сертификат

  • Каждый сертификат должен включать необходимые расширения:

    • Subject Alternative Name (SAN), включающий все IP адреса и DNS имена соответствующего компонента SM

    • Key Usage: critical Digital Signature, Key Encipherment

    • Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication

  • Сертификаты генерируются отдельно для каждого узла и компонента Smart Monitor

Условные обозначения

$PATH_NEW_NODE_KEY – путь до нового приватного ключа

$PATH_NEW_NODE_CERT_CSR – путь до Certificate Signing Request (CSR)

$PATH_OPENSSL_CONFIG – путь до конфигурационного файла для OpenSSL

$PATH_CLIENT_CA – путь до корневых сертификатов инфраструктуры

Шаги генерации сертификатов

1. Подготовка

Перед началом генерации убедитесь, что у вас есть корневой сертификат (например, ca-cert.pem) и соответствующий приватный ключ (например, ca-key.pem).

2. Создание конфигурационного файла для OpenSSL

Создайте файл $PATH_OPENSSL_CONFIG/openssl.cnf и укажите в нем параметры SAN и другие настройки, изменяя значения DNS и IP для каждого узла.

[ req ]
default_bits = 2048
default_md = sha256
distinguished_name = req_distinguished_name
req_extensions = req_ext

[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = RU
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Moscow
localityName = Locality Name (eg, city)
localityName_default = Moscow
organizationName = Organization Name (eg, company)
organizationName_default = Test Organization
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = smos-node-name

[ req_ext ]
subjectAltName = @alt_names
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth

[ alt_names ]
DNS.1 = <DNS_ПЕРВОЕ_ИМЯ_УЗЛА>
IP.1 = <IP_ДОПОЛНИТЕЛЬНЫЙ_УЗЛА>
DNS.2 = <DNS_ВТОРОЕ_ИМЯ_УЗЛА>
IP.2 = <IP_ДОПОЛНИТЕЛЬНЫЙ_УЗЛА>

3. Генерация сертификатов для каждого узла (Master, Hot-Data, Cold-Data, OSD, Logstash, SBM, SB)

Для каждого узла выполните следующие команды:

  • Создание приватного ключа:
openssl genpkey -algorithm RSA -out $PATH_NEW_NODE_KEY/node-key.pem -pkeyopt rsa_keygen_bits:2048
  • Создание запроса на сертификат (CSR):
openssl req -new -key $PATH_NEW_NODE_KEY/node-key.pem -out $PATH_NEW_NODE_CERT_CSR/node-cert.csr -config $PATH_OPENSSL_CONFIG/openssl.cnf
  • Подписание CSR корневым сертификатом инфраструктуры:
openssl x509 -req -in $PATH_NEW_NODE_CERT_CSR/node-cert.csr -CA $PATH_CLIENT_CA/ca-cert.pem -CAkey $PATH_CLIENT_CA/ca-cert.key -CAcreateserial -out $PATH_NEW_NODE_CERT_PEM/node-cert.pem -days 1095 -extensions req_ext -extfile $PATH_OPENSSL_CONFIG/openssl.cnf
  • Проверка созданного сертификата:
openssl x509 -in $PATH_NEW_NODE_CERT_PEM/node-cert.pem -text -noout

Убедитесь, что в сертификате присутствуют:

  • SAN (Subject Alternative Name)

  • keyUsage (назначение ключа)

  • extendedKeyUsage (расширенное использование ключа, если требуется)