elasticsearch-certgen

编辑

在 6.1 版本中已弃用。

已由 elasticsearch-certutil 替代。

elasticsearch-certgen 命令简化了用于 Elastic Stack 的证书颁发机构 (CA)、证书签名请求 (CSR) 和签名证书的创建。尽管此命令已弃用,但您无需替换它创建的 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>
指定使用 <cert_file> 参数中提供的现有 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
显示详细输出。

示例

编辑

在静默模式下使用 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 文件中列出的实例的证书和私钥。