elasticsearch-certgen编辑

已于 6.1 版弃用。

已替换为 elasticsearch-certutil

elasticsearch-certgen 命令简化了证书颁发机构 (CA)、证书签名请求 (CSR) 和签名证书的创建,以便与 Elastic Stack 一起使用。虽然此命令已弃用,但您无需替换它创建的 CA、CSR 或证书。

概要编辑

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])

描述编辑

默认情况下,该命令以交互模式运行,系统会提示您输入有关每个实例的信息。实例是需要传输层安全性 (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 安全功能。

参数编辑

--cert <cert_file>
指定使用现有的 CA 证书生成新的实例证书和密钥,该证书在 <cert_file> 参数中提供。此参数不能与 -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
显示详细输出。

示例编辑

在静默模式下使用 elasticsearch-certgen编辑

要使用静默操作模式,您必须创建一个 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 文件中列出的实例的证书和私钥。