Обновление сертификатов безопасности с другим центром сертификации
Если вам нужно довериться новому центру сертификации из вашей организации или вам нужно сгенерировать новый центр сертификации самостоятельно, воспользуйтесь этим новым центром сертификации для подписи новых сертификатов узлов и укажите узлам доверять новому центру.
Генерация нового сертификата для транспортного уровня
Создайте новый сертификат центра сертификации или получите сертификат центра сертификации вашей организации и добавьте его в существующий хранилище доверенных центров сертификации. После завершения обновления сертификатов для всех узлов вы можете удалить старый сертификат центра сертификации из хранилища (но не раньше!).
В следующих примерах используются файлы PKCS#12, но те же шаги применяются к хранилищам ключей JKS.
-
Откройте файл
ES_PATH_CONF/elasticsearch.ymlи проверьте имена и расположения хранилищ ключей, которые сейчас используются. Вы будете использовать те же имена для новых хранилищ ключей.В этом примере хранилище ключей и хранилище доверенных центров сертификации используют разные файлы. Ваша конфигурация может использовать один и тот же файл как для хранилища ключей, так и для хранилища доверенных центров сертификации.
Эти инструкции предполагают, что предоставленный сертификат подписан доверенным центром сертификации, и режим проверки установлен на
certificate. Эта настройка гарантирует, что узлы не будут пытаться выполнить проверку имени хоста.xpack.security.transport.ssl.keystore.path: config/elastic-certificates.p12 xpack.security.transport.ssl.keystore.type: PKCS12 xpack.security.transport.ssl.truststore.path: config/elastic-stack-ca.p12 xpack.security.transport.ssl.truststore.type: PKCS12 xpack.security.transport.ssl.verification_mode: certificate
-
На любом узле вашего кластера сгенерируйте новый сертификат центра сертификации. Вам нужно выполнить этот шаг только один раз. Если вы используете сертификат центра сертификации своей организации, пропустите этот шаг.
./bin/elasticsearch-certutil ca --pem
Параметры команды
-
--pem - Генерирует каталог, содержащий сертификат центра сертификации и ключ в формате PEM вместо PKCS#12.
- Введите имя сжатого выходного файла, который будет содержать ваш сертификат и ключ, или примите имя по умолчанию
elastic-stack-ca.zip. -
Разархивируйте выходной файл. Результирующий каталог содержит сертификат центра сертификации (
ca.crt) и закрытый ключ (ca.key).Храните эти файлы в защищенном месте, так как они содержат закрытый ключ вашего центра сертификации.
-
-
На каждом узле вашего кластера импортируйте новый сертификат
ca.crtцентра сертификации в существующее хранилище доверенных центров сертификации. Этот шаг гарантирует, что ваш кластер доверяет новому сертификату центра сертификации. В этом примере используется утилита Javakeytoolдля импорта сертификата в хранилище доверенных центров сертификацииelastic-stack-ca.p12.keytool -importcert -trustcacerts -noprompt -keystore elastic-stack-ca.p12 \ -storepass <password> -alias new-ca -file ca.crt
Параметры команды
-
-keystore - Имя хранилища доверенных центров сертификации, в которое вы импортируете новый сертификат центра сертификации.
-
-storepass - Пароль хранилища доверенных центров сертификации.
-
-alias - Имя, которое вы хотите присвоить новой записи сертификата центра сертификации в хранилище ключей.
-
-file - Имя нового сертификата центра сертификации для импорта.
-
-
Проверьте, что новый сертификат центра сертификации был добавлен в хранилище доверенных центров сертификации.
keytool -keystore config/elastic-stack-ca.p12 -list
При запросе введите пароль хранилища доверенных центров сертификации.
Вывод должен содержать как существующий сертификат центра сертификации, так и ваш новый сертификат. Если вы ранее использовали инструмент
elasticsearch-certutilдля генерации хранилища ключей, псевдоним старого центра сертификации по умолчаниюca, а тип записи —PrivateKeyEntry.
Сгенерировать новый сертификат для каждого узла в вашем кластере
Теперь, когда ваше хранилище доверенных центров сертификации обновлено, используйте ваш новый сертификат центра сертификации для подписи сертификата для ваших узлов.
Если ваша организация имеет собственный центр сертификации, вам потребуется сгенерировать запросы на сертификат (CSR). CSR содержат информацию, которую ваш центр сертификации использует для генерации и подписи сертификата безопасности.
-
Используя новый сертификат и ключ центра сертификации, создайте новый сертификат для ваших узлов.
./bin/elasticsearch-certutil cert --ca-cert ca/ca.crt --ca-key ca/ca.key
Параметры команды
-
--ca-cert - Указывает путь к вашему новому сертификату центра сертификации (
ca.crt) в формате PEM. Вы также должны указать параметр--ca-key. -
--ca-key - Указывает путь к закрытому ключу (
ca.key) вашего сертификата центра сертификации. Вы также должны указать параметр--ca-cert.
- Введите имя выходного файла или примите значение по умолчанию
elastic-certificates.p12. - При запросе введите пароль для сертификата вашего узла.
-
-
На текущем узле вашего кластера, где вы обновляете хранилище ключей, запустите поэтапную перезагрузку.
Остановитесь на шаге, где указано Выполните необходимые изменения, а затем переходите к следующему шагу этой процедуры.
-
Замените существующее хранилище ключей новым хранилищем ключей, убедившись, что имена файлов совпадают. Например,
elastic-certificates.p12.Если ваш пароль хранилища ключей меняется, сохраните хранилище ключей с новым именем файла, чтобы Elasticsearch не пытался перезагрузить файл перед обновлением пароля.
-
Если вам нужно сохранить новое хранилище ключей с новым именем файла, обновите файл
ES_PATH_CONF/elasticsearch.yml, чтобы использовать имя файла нового хранилища ключей. Например:xpack.security.transport.ssl.keystore.path: config/elastic-certificates.p12 xpack.security.transport.ssl.keystore.type: PKCS12 xpack.security.transport.ssl.truststore.path: config/elastic-stack-ca.p12 xpack.security.transport.ssl.truststore.type: PKCS12
- Запустите узел, на котором вы обновили хранилище ключей.
-
(Необязательно) Используйте API сертификатов SSL для проверки того, что Elasticsearch загрузил новое хранилище ключей.
GET /_ssl/certificates
-
Если вы обновляете только сертификаты для транспортного уровня (а не уровня HTTP), выполните шаги с 2 по 6 по одному узлу за раз, пока вы не обновите все хранилища ключей в вашем кластере. Затем вы можете выполнить оставшиеся шаги для поэтапной перезагрузки.
В противном случае не выполняйте поэтапную перезагрузку. Вместо этого переходите к шагам по генерации нового сертификата для уровня HTTP.
-
(Необязательно) После замены хранилищ ключей на каждом узле вашего кластера, перечислите сертификаты в вашем хранилище доверенных центров сертификации, а затем удалите старый сертификат центра сертификации.
Если вы ранее использовали инструмент
elasticsearch-certutilдля генерации хранилища ключей, псевдоним старого центра сертификации по умолчаниюca, а тип записи —PrivateKeyEntry.keytool -delete -noprompt -alias ca -keystore config/elastic-stack-ca.p12 \ -storepass <password>
Параметры команды
-
-alias - Имя псевдонима хранилища ключей для старого сертификата центра сертификации, который вы хотите удалить из хранилища доверенных центров сертификации.
-
Что дальше?
Отлично! Вы обновили хранилище ключей для транспортного уровня. Вы также можете обновить хранилище ключей для уровня HTTP, если это необходимо. Если вы не обновляете хранилище ключей для уровня HTTP, то все готово.
Генерация нового сертификата для HTTP-слоя
Вы можете сгенерировать сертификаты для HTTP-слоя, используя ваш новый сертификат CA и приватный ключ. Другие компоненты, такие как Kibana или любые клиенты Elastic на языках программирования, проверяют этот сертификат при подключении к Elasticsearch.
Если ваша организация имеет собственный центр сертификации (CA), вам потребуется сгенерировать запросы на подписание сертификатов (CSR). CSR содержат информацию, которую ваш CA использует для генерации и подписания сертификата безопасности вместо использования самоподписанных сертификатов, которые генерирует инструмент elasticsearch-certutil.
-
На любом узле вашего кластера, где установлен Elasticsearch, запустите инструмент сертификации Elasticsearch HTTP.
./bin/elasticsearch-certutil http
Эта команда сгенерирует файл
.zip, содержащий сертификаты и ключи для использования с Elasticsearch и Kibana. В каждой папке находится файлREADME.txt, описывающий, как использовать эти файлы.- При запросе о желании сгенерировать CSR, введите
n. - При запросе о желании использовать существующий CA, введите
y. - Введите абсолютный путь к вашему новому сертификату CA, например, путь к файлу
ca.crt. - Введите абсолютный путь к вашему новому приватному ключу CA, например, путь к файлу
ca.key. - Введите срок действия для вашего сертификата. Вы можете указать срок действия в годах, месяцах или днях. Например, введите
1yдля одного года. -
При запросе о желании сгенерировать один сертификат на узел, введите
y.Каждый сертификат будет иметь свой собственный приватный ключ и будет выпущен для конкретного имени хоста или IP-адреса.
- При запросе укажите имя первого узла вашего кластера. Используйте то же имя узла, что и значение для параметра
node.nameв файлеelasticsearch.yml. -
Введите все имена хостов, используемые для подключения к вашему первому узлу. Эти имена хостов будут добавлены в поле Subject Alternative Name (SAN) вашего сертификата.
Перечислите все имена хостов и варианты, используемые для подключения к вашему кластеру по протоколу HTTPS.
- Введите IP-адреса, которые клиенты могут использовать для подключения к вашему узлу.
- Повторите эти шаги для каждого дополнительного узла в вашем кластере.
- При запросе о желании сгенерировать CSR, введите
- После генерации сертификата для каждого из ваших узлов, введите пароль для вашего хранилища ключей при запросе.
-
Разархивируйте сгенерированный файл
elasticsearch-ssl-http.zip. Этот сжатый файл содержит одну директорию как для Elasticsearch, так и для Kibana. Внутри директории/elasticsearchнаходится директория для каждого узла с собственным файломhttp.p12. Например:/node1 |_ README.txt |_ http.p12 |_ sample-elasticsearch.yml
/node2 |_ README.txt |_ http.p12 |_ sample-elasticsearch.yml
/node3 |_ README.txt |_ http.p12 |_ sample-elasticsearch.yml
- При необходимости переименуйте каждый файл
http.p12, чтобы он соответствовал имени вашего существующего сертификата для HTTP-клиентских коммуникаций. Например,node1-http.p12. -
На текущем узле вашего кластера, где вы обновляете хранилище ключей, запустите поэтапную перезагрузку.
Остановитесь на шаге, указывающем Выполните необходимые изменения, а затем переходите к следующему шагу в этой процедуре.
-
Замените ваше существующее хранилище ключей новым, убедившись, что имена файлов совпадают. Например,
node1-http.p12.Если у вас меняется пароль хранилища ключей, сохраните хранилище ключей с новым именем файла, чтобы Elasticsearch не пытался перезагрузить файл до того, как вы обновите пароль.
-
Если вам нужно было сохранить новое хранилище ключей с новым именем файла, обновите файл
ES_PATH_CONF/elasticsearch.yml, чтобы использовать имя нового хранилища ключей. Например:xpack.security.http.ssl.enabled: true xpack.security.http.ssl.keystore.path: node1-http.p12
- Если у вас меняется пароль хранилища ключей, добавьте пароль для вашего приватного ключа в защищенные настройки Elasticsearch.
./bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
- Запустите узел, на котором вы обновили хранилище ключей.
Используйте API cat nodes для подтверждения, что узел присоединился к кластеру:
GET _cat/nodes
-
(Необязательно) Используйте API сертификатов SSL для проверки того, что Elasticsearch загрузил новое хранилище ключей.
GET /_ssl/certificates
- По одному узлу, выполните шаг 5 по шаг 10, пока не обновите все хранилища ключей в вашем кластере.
- Выполните оставшиеся шаги по поэтапной перезагрузке, начиная с шага Включить повторное распределение фрагментов.
Что дальше?
Отлично! Вы обновили хранилище ключей для HTTP-слоя. Теперь вы можете обновить шифрование между Kibana и Elasticsearch.
Обновление шифрования между Kibana и Elasticsearch
Когда вы запустили инструмент elasticsearch-certutil с опцией http, он создал директорию /kibana, содержащую файл elasticsearch-ca.pem. Вы используете этот файл для настройки Kibana на доверие CA Elasticsearch для HTTP-слоя.
-
Скопируйте файл
elasticsearch-ca.pemв директорию конфигурации Kibana, как определено путемKBN_PATH_CONF.KBN_PATH_CONFсодержит путь к файлам конфигурации Kibana. Если вы установили Kibana с помощью архивов (zipилиtar.gz), путь по умолчаниюKBN_HOME/config. Если вы использовали пакетные дистрибутивы (Debian или RPM), путь по умолчанию/etc/kibana. -
Если вы изменили имя файла для файла
elasticsearch-ca.pem, отредактируйтеkibana.ymlи обновите конфигурацию, чтобы указать расположение сертификата безопасности для HTTP-слоя.elasticsearch.ssl.certificateAuthorities: KBN_PATH_CONF/elasticsearch-ca.pem
- Перезапустите Kibana.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/update-node-certs-different.html