Elasticsearch. Выпуск сертификата в формате PKCS#12.

В предыдущей статье мы рассматривали настройку безопасности на примере одной машины. Для кластерного решения необходимо настроить дополнительные параметры безопасности и использовать сертификат для связи между нодами.

Операции создания центра сертификации (CA) и\или сертификатов (certificates) выполняются утилитой elasticsearch-certutil:

# cd /usr/share/elasticsearch
# bin /elasticsearch-certutil

Подробнее об утилите elasticsearch-certutil

Выпуск сертификаты в формате PKCS#12

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

# cd /usr/share/elasticsearch
# bin /elasticsearch-certutil ca

Называем СА как Вам удобно, например elastic-stack-ca.p12, это имя нам потребуется на следующем шаге (утилита предложит наименование по умолчанию).
Если есть необходимость создать СА без пароля то указываем параметр -pass «», команда выглядит следующим образом:

# cd /usr/share/elasticsearch
# bin /elasticsearch-certutil ca -pass ""  

Вторым шагом выпускаем сертификат (тут так же можно оставить пароль пустым использую параметр -pass «»):

# cd /usr/share/elasticsearch
# bin /elasticsearch-certutil cert --ca elastic-stack-ca.p12      //ссылаемся на созданный ранее СА

Называем СА как Вам удобно, например elastic-cert.p12

Если вы защитили сертификат узла с помощью пароля, добавьте пароль в хранилище ключей Elasticsearch:

# cd /usr/share/elasticsearch
# bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
# bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

Теперь созданные файлы копируем в каталог настроек Elasticsearch, в моем случае это /etc/elasticsearch :

-Des.path.conf=/etc/elasticsearch

Иначе мы получим ошибку безопасности JAVA, пример ошибки:
Caused by: java.security.AccessControlException: access denied («java.io.FilePermission» «/usr/share/elasticsearch/config/cert/elastic-cert.p12» «read»)

[2019-09-04T20:32:48,044][ERROR][o.e.b.Bootstrap          ] [vsFawpk] Exception
java.lang.IllegalStateException: failed to load plugin class [org.elasticsearch.xpack.core.XPackPlugin]
        at org.elasticsearch.plugins.PluginsService.loadPlugin(PluginsService.java:614) ~[elasticsearch-6.8.2.jar:6.8.2]
...
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
        at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_202]
        at org.elasticsearch.plugins.PluginsService.loadPlugin(PluginsService.java:605) ~[elasticsearch-6.8.2.jar:6.8.2]
        ... 15 more
Caused by: org.elasticsearch.ElasticsearchException: failed to initialize a TrustManagerFactory
...
Caused by: java.security.AccessControlException: access denied ("java.io.FilePermission" "/usr/share/elasticsearch/config/cert/elastic-cert.p12" "read")
...

Копируем файлы в /etc/elasticsearch/config/cert/ и выдаем права (иначе шанс словить ошибку JAVA выше)

# mkdir -p /etc/elasticsearch/config/cert/
# cp /usr/share/elasticsearch/elastic-c* /etc/elasticsearch/config/cert/
# chmod 666 /etc/elasticsearch/config/cert/elastic-c*

Файлы нужно скопировать на каждый узел кластера, для копирования на удаленный сервер воспользуйтесь утилитой scp.

Финальный шаг, теперь в конфиге elasticsearch.yml для каждого узла кластера указываем использование настроек безопасности XPack и ссылаемся на созданные СА и сертификат:

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /etc/elasticsearch/config/cert/elastic-ca.p12
xpack.security.transport.ssl.truststore.path: /etc/elasticsearch/config/cert/elastic-cert.p12

Для применения настроек перезапустите сервис.

Полезная информация и первоисточник:
https://www.elastic.co/guide/en/elasticsearch/reference/6.8/configuring-tls.html
https://www.elastic.co/guide/en/elasticsearch/reference/6.8/certutil.html

1+

Добавить комментарий

Ваш e-mail не будет опубликован.