ElasticsearchでTransport Layer Security (TLS/SSL)を設定する - 7.1

Talend Data Fabric インストールガイド Linux

EnrichVersion
7.1
EnrichProdName
Talend Data Fabric
task
インストールとアップグレード
EnrichPlatform
Talend Activity Monitoring Console
Talend Administration Center
Talend Artifact Repository
Talend CommandLine
Talend Data Preparation
Talend Data Stewardship
Talend DQ Portal
Talend ESB
Talend Identity and Access Management
Talend Installer
Talend JobServer
Talend Log Server
Talend MDM Server
Talend MDM Web UI
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/ja/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. テストで使用するDNS名を有効にするため、/etc/hostsファイルを以下のように編集できます:
      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. 以下のコマンドを実行して、Dockerホストマシンの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

    URLの末尾に?vを追加し、カラム名を取得します。詳細は、https://www.elastic.co/guide/ja/elasticsearch/reference/6.x/cat.html#verboseを参照して下さい。