Генерация сертификатов для компонентов 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
(расширенное использование ключа, если требуется)