elasticsearch-certgen

edit

在6.1中已弃用。

替换为 elasticsearch-certutil

The elasticsearch-certgen 命令简化了证书颁发机构(CA)、证书签名请求(CSR)和用于 Elastic Stack 的签名证书的创建。虽然此命令已被弃用,但您不需要替换它创建的 CA、CSR 或证书。

概述

edit
bin/elasticsearch-certgen
(([--cert <cert_file>] [--days <n>] [--dn <name>] [--key <key_file>]
[--keysize <bits>] [--pass <password>] [--p12 <password>])
| [--csr])
[-E <KeyValuePair>] [-h, --help] [--in <input_file>] [--out <output_file>]
([-s, --silent] | [-v, --verbose])

描述

edit

默认情况下,该命令以交互模式运行,并提示您输入有关每个实例的信息。实例是指任何需要传输层安全性(TLS)或SSL证书的Elastic Stack组件。根据您的配置,Elasticsearch、Logstash、Kibana和Beats可能都需要证书和私钥。

每个实例所需的最小值是一个名称。这可以简单地是主机名,用作证书的通用名称。您也可以使用完整的专有名称。IP地址和DNS名称是可选的。多个值可以指定为逗号分隔的字符串。如果没有提供IP地址或DNS名称,您可能需要在TLS或SSL配置中禁用主机名验证。

根据您指定的参数,系统还会提示您输入必要的信息,例如输出文件的路径和CA私钥密码。

命令 elasticsearch-certgen 也支持静默模式操作,以实现更简单的批处理操作。更多信息,请参阅 在静默模式下使用 elasticsearch-certgen

输出文件是一个包含每个实例的签名证书和私钥的zip文件。如果您选择生成CA(这是默认行为),则证书和私钥将包含在输出文件中。如果您选择生成CSR,则应将它们提供给您的商业或组织特定的证书颁发机构以获取签名证书。签名证书必须为PEM格式才能与Elastic Stack安全功能一起使用。

参数

edit
--cert <cert_file>
指定使用现有的CA证书生成新的实例证书和密钥,该CA证书在参数中提供。此参数不能与-csr参数一起使用。
--csr
指定在证书签名请求模式下操作。
--days <n>
指定一个整数值,表示生成的密钥的有效天数。默认值是1095。此参数不能与-csr参数一起使用。
--dn <name>
定义用于生成CA证书的专有名称。 默认值为CN=Elastic Certificate Tool Autogenerated CA。 此参数不能与-csr参数一起使用。
-E <KeyValuePair>
配置一个设置。
-h, --help
返回所有命令参数。
--in <input_file>
指定用于在静默模式下运行的文件。输入文件必须是一个YAML文件,如使用elasticsearch-certgen在静默模式下所述。
--key <key_file>
指定CA证书的私钥文件。 每当使用-cert参数时,此参数是必需的。
--keysize <bits>
定义生成RSA密钥时使用的位数。默认值是2048
--out <output_file>
指定输出文件的路径。
--pass <password>
指定CA私钥的密码。 如果提供了-key参数,则这是现有私钥文件的密码。否则,这是应应用于生成的CA密钥的密码。此参数不能与-csr参数一起使用。
--p12 <password>
为每个实例证书和密钥生成一个PKCS#12(.p12.pfx)容器文件。生成的文件由提供的密码保护,密码可以为空。此参数不能与-csr参数一起使用。
-s, --silent
显示最小输出。
-v, --verbose
显示详细输出。

示例

edit

在静默模式下使用elasticsearch-certgen

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名称。 这些值将作为主题备用名称添加。

用于此实例的文件名。此名称用作包含实例文件的目录的名称,也用于目录内文件的名称。此文件名不应带有扩展名。注意:如果为实例提供的name不代表有效的文件名,则必须存在filename字段。

当您的YAML文件准备好后,您可以使用elasticsearch-certgen命令来生成证书或证书签名请求。只需使用-in参数来指定文件的位置。例如:

bin/elasticsearch-certgen -in instances.yml

此命令生成一个CA证书和私钥,以及在YAML文件中列出的实例的证书和私钥。