elasticsearch-certutil
editelasticsearch-certutil
editThe elasticsearch-certutil 命令简化了为 Elastic Stack 中的传输层安全性 (TLS) 创建证书的过程。
概要
editbin/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>] [--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])
描述
edit您可以指定以下模式之一:ca、cert、csr、http。elasticsearch-certutil 命令还支持静默模式操作,以实现更简便的批处理操作。
CA 模式
edit模式 ca 生成一个新的证书颁发机构(CA)。默认情况下,它会生成一个包含 CA 证书和 CA 私钥的单个 PKCS#12 输出文件。如果您指定 --pem 参数,该命令会生成一个包含证书和私钥的 zip 文件,这些文件以 PEM 格式存储。
随后,您可以将这些文件作为命令的cert模式的输入。
CERT 模式
editThe cert 模式生成 X.509 证书和私钥。默认情况下,它会生成一个用于单个实例的证书和密钥。
要为多个实例生成证书和密钥,请指定--multiple参数,该参数会提示您输入每个实例的详细信息。或者,您可以使用--in参数来指定包含实例详细信息的YAML文件。
实例是指任何需要TLS或SSL证书的Elastic Stack组件。根据您的配置,Elasticsearch、Logstash、Kibana和Beats可能都需要证书和私钥。实例所需的最少信息是其名称,该名称用作证书的通用名称。实例名称可以是主机名值或完整的专有名称。如果实例名称会导致无效的文件或目录名称,您必须在--name命令参数或输入YAML文件的filename字段中指定文件名。
您可以选择为每个实例提供IP地址或DNS名称。如果未指定IP地址和DNS名称,Elastic Stack产品将无法执行主机名验证,您可能需要将verification_mode安全设置配置为仅certificate。有关此设置的更多信息,请参阅安全设置。
此命令生成的所有证书均由CA签名,除非指定了--self-signed参数。除非指定了--self-signed,否则您必须使用--ca或--ca-cert和--ca-key参数提供自己的CA。有关生成CA的更多信息,请参阅此命令的CA模式。要生成自签名证书,请使用--self-signed参数。
默认情况下,cert 模式生成一个包含实例证书、实例私钥和 CA 证书的单个 PKCS#12 输出文件。如果您指定 --pem 参数,该命令将生成 PEM 格式的证书和密钥,并将它们打包到一个 zip 文件中。如果您指定 --multiple 或 --in 参数,该命令将生成一个包含生成的证书和密钥的 zip 文件。
CSR 模式
editThe csr 模式生成证书签名请求 (CSRs),您可以将其发送给受信任的证书颁发机构以获取签名证书。签名证书必须为 PEM 或 PKCS#12 格式才能与 Elasticsearch 安全功能一起使用。
默认情况下,该命令为单个实例生成一个CSR。
要为多个实例生成CSR,请指定--multiple参数,该参数会提示您输入每个实例的详细信息。或者,您可以使用--in参数来指定一个包含实例详细信息的YAML文件。
The csr mode produces a single zip file which contains the CSRs and the
private keys for each instance. 每个CSR都以标准的PEM编码的PKCS#10 CSR形式提供。每个密钥都以PEM编码的RSA私钥形式提供。
HTTP 模式
editThe http 模式指导您完成为 Elasticsearch 的 HTTP (REST) 接口生成证书的过程。它会询问您一系列问题,以便根据您的需求生成正确的文件集。例如,根据您的选择,它可能会生成一个包含证书颁发机构 (CA)、证书签名请求 (CSR) 或用于 Elasticsearch 和 Kibana 的证书和密钥的 zip 文件。zip 文件中的每个文件夹都包含一个自述文件,解释如何使用这些文件。
参数
edit-
ca -
指定生成一个新的本地证书颁发机构(CA)。此参数不能与
csr、cert或http参数一起使用。 -
cert -
指定生成新的X.509证书和密钥。
此参数不能与
csr、ca或http参数一起使用。 -
csr -
指定生成证书签名请求。此参数不能与
ca、cert或http参数一起使用。 -
http -
为Elasticsearch HTTP接口生成新的证书或证书请求。此参数不能与
ca、cert或csr参数一起使用。 -
--ca <file_path> -
指定现有CA密钥对的路径(以PKCS#12格式)。此参数仅适用于
cert参数。 -
--ca-cert <file_path> -
指定现有CA证书的路径(PEM格式)。您还必须指定
--ca-key参数。--ca-cert参数仅适用于cert参数。 -
--ca-dn <name> -
定义用于生成CA证书的专有名称(DN)。默认值为
CN=Elastic Certificate Tool Autogenerated CA。此参数不能与csr或http参数一起使用。 -
--ca-key <file_path> -
指定现有CA私钥的路径(PEM格式)。您还必须指定
--ca-cert参数。--ca-key参数仅适用于cert参数。 -
--ca-pass <password> -
指定现有CA私钥或生成的CA私钥的密码。此参数仅适用于
cert参数 -
--days <n> -
指定一个整数值,表示生成的证书的有效天数。默认值是
1095。此参数不能与csr或http参数一起使用。 -
--dns <domain_name> -
指定一个以逗号分隔的DNS名称列表。此参数不能与
ca或http参数一起使用。 -
-E <KeyValuePair> - 配置一个设置。
-
-h, --help - 返回所有命令参数。
-
--in <input_file> -
指定用于在静默模式下运行的文件。输入文件必须是YAML文件。此参数不能与
ca或http参数一起使用。 -
--ip <IP_addresses> -
指定一个以逗号分隔的IP地址列表。此参数不能与
ca或http参数一起使用。 -
--keysize <bits> -
定义生成RSA密钥时使用的位数。默认值是
2048。此参数不能与http参数一起使用。 -
--multiple -
指定为多个实例生成文件。此参数不能与
ca或http参数一起使用。 -
--name <file_name> -
指定生成的证书的名称。此参数不能与
ca或http参数一起使用。 -
--out <file_path> -
指定输出文件的路径。此参数不能与
http参数一起使用。 -
--pass <password> -
指定生成的私钥的密码。 此参数不能与
http参数一起使用。存储在PKCS#12格式中的密钥总是受密码保护的,然而,这个密码可能是空白的。如果你想在不提示的情况下指定一个空白密码,请在命令行中使用
--pass ""(不带=)。存储在PEM格式中的密钥只有在指定
--pass参数时才会受到密码保护。如果你没有为--pass参数提供参数,系统会提示你输入密码。加密的PEM文件不支持空白密码(如果你不希望密码保护你的PEM密钥,那么不要指定--pass)。 -
--pem -
生成PEM格式的证书和密钥,而不是PKCS#12格式。此参数不能与
csr或http参数一起使用。 -
--self-signed -
生成自签名证书。此参数仅适用于
cert参数。不推荐使用此选项来在集群上设置TLS。 事实上,只有在您可以确定绝对不需要CA并且信任直接给予证书本身时,才应使用自签名证书。
-
-s, --silent - 显示最小输出。
-
-v, --verbose - 显示详细输出。
示例
edit以下命令生成一个CA证书和私钥,格式为PKCS#12:
bin/elasticsearch-certutil ca
系统会提示您输入输出文件名和密码。或者,您可以指定--out和--pass参数。
然后,您可以使用新的CA生成X.509证书和私钥。例如:
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
系统会提示您输入CA密码以及输出文件名和密码。
或者,您可以指定--ca-pass、--out和--pass参数。
默认情况下,此命令会生成一个名为 elastic-certificates.p12 的文件,
您可以将其复制到要配置的每个 Elastic 产品的相关配置目录中。有关更多信息,请参阅
使用 TLS 加密节点间通信。
在静默模式下使用elasticsearch-certutil
edit要使用静默模式操作,您必须创建一个包含实例信息的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"
|
实例的名称。这可以是一个简单的字符串值,也可以是一个专有名称(DN)。这是唯一必需的字段。 |
|
|
一个可选的字符串数组,表示此实例的IP地址。允许使用IPv4和IPv6值。这些值将作为主题备用名称添加。 |
|
|
一个可选的字符串数组,表示此实例的DNS名称。 这些值将作为主题备用名称添加。 |
|
|
用于此实例的文件名。此名称用作包含实例文件的目录的名称,也用于目录内文件的名称。此文件名不应带有扩展名。注意:如果为实例提供的 |
当您的YAML文件准备好后,您可以使用elasticsearch-certutil命令来生成证书或证书签名请求。只需使用--in参数来指定文件的位置。例如:
bin/elasticsearch-certutil cert --silent --in instances.yml --out test1.zip --pass testpassword --ca elastic-stack-ca.p12
此命令生成一个压缩的 test1.zip 文件。解压缩输出文件后,每个在 instances.yml 文件中列出的实例都有一个对应的目录。每个实例目录包含一个单一的 PKCS#12 (.p12) 文件,其中包含实例证书、实例私钥和 CA 证书。
您也可以使用YAML文件来生成证书签名请求。例如:
bin/elasticsearch-certutil csr --silent --in instances.yml --out test2.zip --pass testpassword
此命令生成一个压缩文件,其中包含每个实例的目录。每个实例目录包含一个证书签名请求(*.csr 文件)和私钥(*.key 文件)。