接続失敗によるセットアップパスワードコマンドの失敗
elasticsearch-setup-passwordsコマンドは、ユーザー管理APIリクエストを送信することによって、組み込みユーザーのパスワードを設定します。クラスターがHTTP(REST)インターフェースにSSL/TLSを使用している場合、コマンドはHTTPSプロトコルで接続を確立しようとします。接続試行が失敗すると、コマンドは失敗します。
症状:
- 1. ElasticsearchがHTTPSで実行されていますが、コマンドはそれを検出できず、次のエラーを返します:
シェル
Cannot connect to elasticsearch node.
java.net.SocketException: Unexpected end of file from server
...
ERROR: Failed to connect to elasticsearch at
http://127.0.0.1:9200/_security/_authenticate?pretty.
Is the URL correct and elasticsearch running?
- 2. SSL/TLSが構成されていますが、信頼を確立できません。コマンドは次のエラーを返します:
シェル
SSL connection to
https://127.0.0.1:9200/_security/_authenticate?pretty
failed: sun.security.validator.ValidatorException:
PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
Please check the elasticsearch SSL settings under
xpack.security.http.ssl.
...
ERROR: Failed to establish SSL connection to elasticsearch at
https://127.0.0.1:9200/_security/_authenticate?pretty.
- 3. ホスト名の検証が失敗したため、コマンドは失敗し、次のエラーが発生します:
シェル
SSL connection to
https://idp.localhost.test:9200/_security/_authenticate?pretty
failed: java.security.cert.CertificateException:
No subject alternative DNS name matching
elasticsearch.example.com found.
Please check the elasticsearch SSL settings under
xpack.security.http.ssl.
...
ERROR: Failed to establish SSL connection to elasticsearch at
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_mode
をcertificate
に設定することでこの検証を無効にできます。
これらの設定に関する詳細は、セキュリティ設定を参照してください。