接続失敗によるセットアップパスワードコマンドの失敗

elasticsearch-setup-passwordsコマンドは、ユーザー管理APIリクエストを送信することによって、組み込みユーザーのパスワードを設定します。クラスターがHTTP(REST)インターフェースにSSL/TLSを使用している場合、コマンドはHTTPSプロトコルで接続を確立しようとします。接続試行が失敗すると、コマンドは失敗します。

症状:

  • 1. ElasticsearchがHTTPSで実行されていますが、コマンドはそれを検出できず、次のエラーを返します:

シェル

  1. Cannot connect to elasticsearch node.
  2. java.net.SocketException: Unexpected end of file from server
  3. ...
  4. ERROR: Failed to connect to elasticsearch at
  5. http://127.0.0.1:9200/_security/_authenticate?pretty.
  6. Is the URL correct and elasticsearch running?
  • 2. SSL/TLSが構成されていますが、信頼を確立できません。コマンドは次のエラーを返します:

シェル

  1. SSL connection to
  2. https://127.0.0.1:9200/_security/_authenticate?pretty
  3. failed: sun.security.validator.ValidatorException:
  4. PKIX path building failed:
  5. sun.security.provider.certpath.SunCertPathBuilderException:
  6. unable to find valid certification path to requested target
  7. Please check the elasticsearch SSL settings under
  8. xpack.security.http.ssl.
  9. ...
  10. ERROR: Failed to establish SSL connection to elasticsearch at
  11. https://127.0.0.1:9200/_security/_authenticate?pretty.
  • 3. ホスト名の検証が失敗したため、コマンドは失敗し、次のエラーが発生します:

シェル

  1. SSL connection to
  2. https://idp.localhost.test:9200/_security/_authenticate?pretty
  3. failed: java.security.cert.CertificateException:
  4. No subject alternative DNS name matching
  5. elasticsearch.example.com found.
  6. Please check the elasticsearch SSL settings under
  7. xpack.security.http.ssl.
  8. ...
  9. ERROR: Failed to establish SSL connection to elasticsearch at
  10. https://elasticsearch.example.com:9200/_security/_authenticate?pretty.

解決策:

  • 1. クラスターがHTTPインターフェースにTLS/SSLを使用しているが、elasticsearch-setup-passwordsコマンドが非セキュアな接続を確立しようとする場合は、--urlコマンドオプションを使用して明示的にHTTPS URLを指定してください。あるいは、xpack.security.http.ssl.enabled設定をtrueに設定してください。
  • 2. コマンドがElasticsearchサーバーを信頼していない場合は、xpack.security.http.ssl.certificate_authorities設定またはxpack.security.http.ssl.truststore.path設定が正しく構成されていることを確認してください。
  • 3. ホスト名の検証が失敗した場合は、xpack.security.http.ssl.verification_modecertificateに設定することでこの検証を無効にできます。

これらの設定に関する詳細は、セキュリティ設定を参照してください。