在 Elasticsearch 中配置传输层安全性 (TLS/SSL) - 7.1

Talend Data Management Platform 安装与升级指南 (Windows)

EnrichVersion
7.1
EnrichProdName
Talend Data Management Platform
task
数据治理
EnrichPlatform
Talend Activity Monitoring Console
Talend Administration Center
Talend Artifact Repository
Talend CommandLine
Talend Data Preparation
Talend Data Stewardship
Talend DQ Portal
Talend Identity and Access Management
Talend Installer
Talend JobServer
Talend Log Server
Talend Repository Manager
Talend Runtime
Talend SAP RFC Server
Talend Studio

如果您有非试用版许可证,并且您希望使用 X-Pack 安全性,您必须为节点间通信配置 TLS。

过程

  1. 创建一个证书颁发机构/签名颁发机构:
    1. 例如,运行以下命令:
      elasticsearch-6.1.2/bin/x-pack/certgen --dn 'CN=MyExample Global CA' --pass --days 3650 --keysize 4096 --out elk_ca/ELK_CA.zip
      有关更多信息,请参阅 certgen 文档:https://www.elastic.co/guide/zh/elasticsearch/reference/6.x/certgen.html
    2. 看到提示时,输入您选择或生成的密码。
      保存密码,因为您将无法找回它。此密码用于对证书签名。
      此命令输出一个 zip 文件,其中包含公用证书和您的根证书颁发机构的私钥。
    3. 解压缩前一步生成的 zip 文件。

      仅有 ca/ca.crt 文件才会被分发。应将 ca/ca.key 文件连同前面生成的密码一起存储以实现安全保管。您将需要它来解密 ca/ca.key

  2. 生成服务器证书:
    1. 创建一个新的 instance.yml 文件。
      instances:
        - name: 'node1'
          dns: [ 'node1.local' ]
        - name: 'my-kibana'
          dns: [ 'kibana.local' ]
        - name: 'logstash'
          dns: [ 'logstash.local' ]

      此例子将为 Elasticsearch 节点、Kibana 和 Logstash 生成公用证书和私钥。使用这些证书将需要正确设置 DNS 名称。

    2. 您可以编辑 /etc/hosts 文件以使 DNS 名称可有效用于测试目的,如下所示:
      127.0.0.1 localhost node1.local  kibana.local logstash.local
    3. 运行以下命令以生成将在 3 年内对每个实例有效的证书:
      elasticsearch-6.1.2/bin/x-pack/certutil ca elasticsearch-6.1.2/bin/x-pack/certgen --days 1095 --cert elk_ca/ca/ca.crt --key elk_ca/ca/ca.key --pass --in  instances.yml --out certs.zip
      此命令使用前面创建的签名所需的证书和密钥。--pass 选项将提示输入解密签名颁发机构的私钥所需的密码。
    4. 解压缩您生成的 certs.zip 文件。
  3. 在 Elasticsearch 节点上启用 TLS:
    1. 在 Elasticsearch config 文件夹中创建一个 certs 子目录。
    2. ca/ca.crt、节点的私钥和公用证书复制到 config/certs 目录。
    3. 按以下方式编辑 config/elasticsearch.yml
      node.name: node1
      network.host: node1.local
      xpack.ssl.key: certs/node1.key
      xpack.ssl.certificate: certs/node1.crt
      xpack.ssl.certificate_authorities: certs/ca.crt
      xpack.security.transport.ssl.enabled: true
      xpack.security.http.ssl.enabled: true
      discovery.zen.ping.unicast.hosts: [ 'node1.local']
      node.max_local_storage_nodes: 1
    4. 运行以下命令以启动 Elasticsearch 节点:
      ES_PATH_CONF=config ./bin/elasticsearch
    5. 运行以下命令,检查您的 Docket 主机上的 vm.max_map_count 值:
      sysctl vm.max_map_count
    6. 如果该值小于 262144,则运行以下命令:
      sysctl -w vm.max_map_count=262144
    7. 打开终端窗口并转到 Elasticsearch 文件夹:
      cd ~/tmp/cert_blog/elasticsearch-6.0.0-beta2
      $ bin/x-pack/setup-passwords auto -u "https://node1.local:9200"
    8. 看到提示时,键入 y 以继续并保存为用户 elastickibanalogstash_system 生成的密码。
  4. 运行以下命令以检查节点是否在集群中列出:
    curl --cacert elk_ca/ca/ca.crt -u elastic 'https://node1.local:9200/_cat/nodes'
    127.0.0.1 42 100 14 1.91   mdi * node1

    ?v 添加到 URL 末尾以获取列名称。有关更多信息,请参阅https://www.elastic.co/guide/zh/elasticsearch/reference/6.x/cat.html#verbose