elasticsearch-certutil
Команда elasticsearch-certutil упрощает создание сертификатов для использования с Transport Layer Security (TLS) в Elastic Stack.
Синтаксис
bin/elasticsearch-certutil ( (ca [--ca-dn <name>] [--days <n>] [--pem]) | (cert ([--ca <file_path>] | [--ca-cert <file_path> --ca-key <file_path>]) [--ca-dn <name>] [--ca-pass <password>] [--days <n>] [--dns <domain_name>] [--in <input_file>] [--ip <ip_addresses>] [--keep-ca-key] [--multiple] [--name <file_name>] [--pem] [--self-signed]) | (csr [--dns <domain_name>] [--in <input_file>] [--ip <ip_addresses>] [--name <file_name>]) [-E <KeyValuePair>] [--keysize <bits>] [--out <file_path>] [--pass <password>] ) | http [-h, --help] ([-s, --silent] | [-v, --verbose])
Описание
Вы можете указать один из следующих режимов: ca, cert, csr, http. Команда elasticsearch-certutil также поддерживает режим без вывода для упрощения пакетных операций.
Режим CA
Режим ca генерирует новый центр сертификации (CA). По умолчанию он создаёт один выходной файл PKCS#12, содержащий сертификат CA и закрытый ключ CA. Если вы укажете параметр --pem, команда сгенерирует zip-архив, содержащий сертификат и закрытый ключ в формате PEM.
Вы можете использовать эти файлы в качестве входных данных для режима cert команды.
Режим CERT
Режим cert генерирует сертификаты X.509 и закрытые ключи. По умолчанию он создаёт один сертификат и ключ для использования на одном экземпляре.
Для генерации сертификатов и ключей для нескольких экземпляров укажите параметр --multiple, который запросит информацию о каждом экземпляре. В качестве альтернативы вы можете использовать параметр --in, чтобы указать файл YAML, содержащий информацию об экземплярах.
Экземпляр — это любая часть Elastic Stack, которая требует сертификат TLS или SSL. В зависимости от конфигурации Elasticsearch, Logstash, Kibana и Beats могут потребовать сертификат и закрытый ключ. Минимальная требуемая информация для экземпляра — его имя, которое используется в качестве общего имени сертификата. Имя экземпляра может быть именем хоста или полным полным доменным именем. Если имя экземпляра приведёт к недопустимому имени файла или каталога, вы также должны указать имя файла в параметре команды --name или поле filename в файле входного YAML.
Вы можете дополнительно указать IP-адреса или имена DNS для каждого экземпляра. Если не указаны ни IP-адреса, ни имена DNS, продукты Elastic Stack не смогут выполнить проверку имени хоста, и вам может потребоваться настроить параметр безопасности verification_mode на значение certificate только. Дополнительную информацию об этой настройке можно найти в Настройках безопасности.
Все сертификаты, сгенерированные этой командой, подписаны CA, если не указан параметр --self-signed. Вы можете предоставить собственный CA с помощью параметров --ca или --ca-cert и --ca-key. В противном случае команда автоматически сгенерирует новый CA. [7.11.0] Устарело в 7.11.0. Генерация сертификатов без указания сертификата и ключа CA устарела. В следующей основной версии необходимо предоставить сертификат CA, если не указан параметр --self-signed. Дополнительную информацию о генерации CA см. в режиме CA этой команды. Для генерации самоподписанных сертификатов используйте параметр --self-signed.
По умолчанию режим cert создаёт один выходной файл PKCS#12, содержащий сертификат экземпляра, закрытый ключ экземпляра и сертификат CA. Если вы укажете параметр --pem, команда сгенерирует сертификаты и ключи в формате PEM и упакует их в zip-архив. Если вы укажете параметры --keep-ca-key, --multiple или --in, команда создаст zip-архив, содержащий сгенерированные сертификаты и ключи.
Режим CSR
Режим csr генерирует запросы на подпись сертификата (CSR), которые вы можете отправить в доверенный центр сертификации для получения подписанных сертификатов. Подписанные сертификаты должны быть в формате PEM или PKCS#12, чтобы работать с функциями безопасности Elasticsearch.
По умолчанию команда создаёт один CSR для одного экземпляра.
Для генерации CSR для нескольких экземпляров укажите параметр --multiple, который запросит информацию о каждом экземпляре. В качестве альтернативы вы можете использовать параметр --in, чтобы указать файл YAML, содержащий информацию об экземплярах.
Режим csr создаёт один zip-архив, содержащий CSR и закрытые ключи для каждого экземпляра. Каждый CSR предоставляется как стандартное кодирование PEM PKCS#10 CSR. Каждый ключ предоставляется как кодирование PEM закрытого ключа RSA.
Режим HTTP
Режим http проведет вас через процесс генерации сертификатов для использования с интерфейсом HTTP (REST) для Elasticsearch. Он задаст вам ряд вопросов для генерации нужного набора файлов. Например, в зависимости от ваших выборов, он может сгенерировать zip-архив, содержащий центр сертификации (CA), запрос на подпись сертификата (CSR) или сертификаты и ключи для использования в Elasticsearch и Kibana. Каждый каталог в zip-архиве содержит файл readme, поясняющий, как использовать файлы.
Параметры
-
ca - Указывает на создание нового локального центра сертификации (ЦС). Этот параметр нельзя использовать с параметрами
csrилиcert. -
cert - Указывает на создание новых сертификатов и ключей X.509. Этот параметр нельзя использовать с параметрами
csrилиca. -
csr - Указывает на создание запросов на подписание сертификатов. Этот параметр нельзя использовать с параметрами
caилиcert. -
http - Создаёт новый сертификат или запрос на сертификат для HTTP-интерфейса Elasticsearch.
-
--ca <file_path> - Указывает путь к существующей паре ключей ЦС (в формате PKCS#12). Этот параметр нельзя использовать с параметрами
caилиcsr. -
--ca-cert <file_path> - Указывает путь к существующему сертификату ЦС (в формате PEM). Необходимо также указать параметр
--ca-key. Параметр--ca-certнельзя использовать с параметрамиcaилиcsr. -
--ca-dn <name> - Определяет отличительный имя (DN), используемый для генерируемого сертификата ЦС. Значение по умолчанию —
CN=Elastic Certificate Tool Autogenerated CA. Этот параметр нельзя использовать с параметромcsr. -
--ca-key <file_path> - Указывает путь к существующему закрытому ключу ЦС (в формате PEM). Необходимо также указать параметр
--ca-cert. Параметр--ca-keyнельзя использовать с параметрамиcaилиcsr. -
--ca-pass <password> - Указывает пароль для существующего или сгенерированного закрытого ключа ЦС. Этот параметр нельзя использовать с параметрами
caилиcsr. -
--days <n> - Указывает целое значение, представляющее количество дней действия сгенерированных сертификатов. Значение по умолчанию —
1095. Этот параметр нельзя использовать с параметромcsr. -
--dns <domain_name> - Указывает список DNS-имен, разделённых запятыми. Этот параметр нельзя использовать с параметром
ca. -
-E <KeyValuePair> - Настраивает параметр.
-
-h, --help - Возвращает все параметры команды.
-
--in <input_file> - Указывает файл, используемый для работы в бесшумном режиме. Файл ввода должен иметь формат YAML. Этот параметр нельзя использовать с параметром
ca. -
--ip <IP_addresses> - Указывает список IP-адресов, разделённых запятыми. Этот параметр нельзя использовать с параметром
ca. -
--keep-ca-key - При работе в режиме
certс автоматически сгенерированным ЦС указывает на сохранение закрытого ключа ЦС для дальнейшего использования. -
--keysize <bits> - Определяет количество битов, используемых в сгенерированных ключах RSA. Значение по умолчанию —
2048. -
--multiple - Указывает на генерацию файлов для нескольких экземпляров. Этот параметр нельзя использовать с параметром
ca. -
--name <file_name> - Указывает имя генерируемого сертификата. Этот параметр нельзя использовать с параметром
ca. -
--out <file_path> - Указывает путь к выходным файлам.
-
--pass <password> -
Указывает пароль для сгенерированных закрытых ключей.
Ключи в формате PKCS#12 всегда защищены паролем, однако этот пароль может быть пустым. Если вы хотите указать пустой пароль без запроса, используйте
--pass ""(без=) в командной строке.Ключи в формате PEM защищены паролем только если указан параметр
--pass. Если вы не предоставите аргумент для параметра--pass, вам будет предложено ввести пароль. Зашифрованные файлы PEM не поддерживают пустые пароли (если вы не хотите защищать ваши ключи PEM паролем, не указывайте--pass). -
--pem - Генерирует сертификаты и ключи в формате PEM вместо PKCS#12. Этот параметр нельзя использовать с параметром
csr. -
--self-signed -
Генерирует самоподписанные сертификаты. Этот параметр применим только к параметру
cert.Этот параметр не рекомендуется для настройки TLS в кластере. На самом деле, самоподписанный сертификат следует использовать только тогда, когда вы уверены, что ЦС определённо не нужен и доверие напрямую предоставляется самому сертификату.
-
-s, --silent - Показ минимального вывода.
-
-v, --verbose - Показ подробного вывода.
Примеры
Следующая команда генерирует сертификат и закрытый ключ ЦС в формате PKCS#12:
bin/elasticsearch-certutil ca
Вам будет предложено ввести имя выходного файла и пароль. Вы также можете указать параметры --out и --pass.
Затем вы можете сгенерировать X.509-сертификаты и закрытые ключи, используя новый ЦС. Например:
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
Вам будет предложено ввести пароль ЦС, имя выходного файла и пароль. Вы также можете указать параметры --ca-pass, --out и --pass.
По умолчанию эта команда генерирует файл с именем elastic-certificates.p12, который можно скопировать в соответствующий каталог конфигурации для каждого продукта Elastic, который вы хотите настроить. Дополнительную информацию можно найти в разделе Шифрование межузлового взаимодействия с помощью TLS.
Использование elasticsearch-certutil в бесшумном режиме
Для работы в бесшумном режиме необходимо создать файл YAML, содержащий информацию об экземплярах. Он должен соответствовать следующему формату:
instances:
- name: "node1"
ip:
- "192.0.2.1"
dns:
- "node1.mydomain.com"
- name: "node2"
ip:
- "192.0.2.2"
- "198.51.100.1"
- name: "node3"
- name: "node4"
dns:
- "node4.mydomain.com"
- "node4.internal"
- name: "CN=node5,OU=IT,DC=mydomain,DC=com"
filename: "node5" | Имя экземпляра. Это может быть простая строка или имя Distinguished Name (DN). Это единственное обязательное поле. | |
| Необязательный массив строк, представляющий IP-адреса для этого экземпляра. Разрешены значения IPv4 и IPv6. Значения добавляются в качестве альтернативных имен субъекта. | |
| Необязательный массив строк, представляющих DNS-имена для этого экземпляра. Значения добавляются в качестве альтернативных имен субъекта. | |
| Имя файла для этого экземпляра. Это имя используется в качестве имени каталога, содержащего файлы экземпляра в выводе. Оно также используется в именах файлов внутри каталога. Имя файла не должно иметь расширения. Примечание: если предоставленное для экземпляра |
После подготовки файла YAML вы можете использовать команду elasticsearch-certutil для генерации сертификатов или запросов на подписание сертификатов. Просто используйте параметр --in, чтобы указать расположение файла. Например:
bin/elasticsearch-certutil cert --silent --in instances.yml --out test1.zip --pass testpassword --keep-ca-key
Эта команда генерирует сжатый файл test1.zip. После распаковки выходного файла имеется каталог для каждого экземпляра, указанного в файле instances.yml. Каждый каталог экземпляра содержит один файл PKCS#12 (.p12), содержащий сертификат экземпляра, закрытый ключ экземпляра и сертификат ЦС.
Вы также можете использовать файл YAML для генерации запросов на подписание сертификатов. Например:
bin/elasticsearch-certutil csr --silent --in instances.yml --out test2.zip --pass testpassword
Эта команда генерирует сжатый файл, который содержит каталог для каждого экземпляра. Каждый каталог экземпляра содержит запрос на подписание сертификата (файл *.csr) и закрытый ключ (файл *.key).
© 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/certutil.html