JDKバージョンによるサポートされているSSL/TLSバージョン

Elasticsearchは、JDKのSSLおよびTLSの実装に依存しています。

異なるJDKバージョンは異なるSSLバージョンをサポートしており、これがElasticsearchの動作に影響を与える可能性があります。

このサポートは、JDKのデフォルトJSSEプロバイダーで実行している場合に適用されます。 FIPS 140-2セキュリティプロバイダーを使用するように構成されたJVMは、カスタムTLS実装を持っている可能性があり、このリストとは異なるTLSプロトコルバージョンをサポートしている可能性があります。

TLSサポートに関する情報は、セキュリティプロバイダーのリリースノートを確認してください。

  • SSLv3
  • SSL v3はすべてのElasticsearch 互換性のあるJDKでサポートされていますが、デフォルトでは無効になっています。JDKでの追加SSL/TLSバージョンの有効化を参照してください。
  • TLSv1
  • TLS v1.0はすべてのElasticsearch 互換性のあるJDKでサポートされています。一部の新しいJDK(ElasticsearchにバンドルされているJDKを含む)は、デフォルトでTLS v1.0を無効にしています。JDKでの追加SSL/TLSバージョンの有効化を参照してください。
  • TLSv1.1
  • TLS v1.1はすべてのElasticsearch 互換性のあるJDKでサポートされています。一部の新しいJDK(ElasticsearchにバンドルされているJDKを含む)は、デフォルトでTLS v1.1を無効にしています。JDKでの追加SSL/TLSバージョンの有効化を参照してください。
  • TLSv1.2
  • TLS v1.2はすべてのElasticsearch 互換性のあるJDKでサポートされています。ElasticsearchがサポートするすべてのJDK(バンドルされたJDKを含む)でデフォルトで有効になっています。
  • TLSv1.3
  • TLS v1.3はJDK11以降およびJDK8の8u261以降のビルド(Elasticsearchがサポートする各JDK8ディストリビューションの最新リリースを含む)でサポートされています。TLS v1.3は、ElasticsearchにバンドルされているJDKでサポートされており、デフォルトで有効になっています。
    ElasticsearchはTLS v1.3なしで古いJDK8ビルドでの実行をサポートしていますが、より良いサポートと更新のためにTLS v1.3を含むJDKバージョンへのアップグレードを推奨します。

JDKでの追加SSL/TLSバージョンの有効化

JDKのサポートされているSSL/TLSバージョンのセットは、JDKの一部としてインストールされるjavaセキュリティプロパティファイルによって制御されます。

この構成ファイルには、そのJDKで無効になっているSSL/TLSアルゴリズムがリストされています。このリストからTLSバージョンを削除し、JDKで使用するには、次の手順を実行してください。

  • 1. JDKの構成ファイルを見つけます。
  • 2. そのファイルからjdk.tls.disabledAlgorithms設定をコピーし、Elasticsearch構成ディレクトリ内のカスタム構成ファイルに追加します。
  • 3. カスタム構成ファイル内で、jdk.tls.disabledAlgorithmsから使用したいTLSバージョンの値を削除します。
  • 4. Elasticsearchを構成して、カスタム構成ファイルが使用されるようにJDKにカスタムシステムプロパティを渡します。

JDKの構成ファイルを見つける

Elasticsearch バンドルJDKの場合、構成ファイルはElasticsearchホームディレクトリのサブディレクトリ($ES_HOME)にあります:

  • Linux: $ES_HOME/jdk/conf/security/java.security
  • Windows: $ES_HOME/jdk/conf/security/java.security
  • macOS:$ES_HOME/jdk.app/Contents/Home/conf/security/java.security

JDK8の場合、構成ファイルはJavaインストールのjre/lib/securityディレクトリ内にあります。$JAVA_HOMEがElasticsearchを実行するために使用するJDKのホームディレクトリを指している場合、構成ファイルは次の場所にあります:

  • $JAVA_HOME/jre/lib/security/java.security

JDK11以降の場合、構成ファイルはJavaインストールのconf/securityディレクトリ内にあります。$JAVA_HOMEがElasticsearchを実行するために使用するJDKのホームディレクトリを指している場合、構成ファイルは次の場所にあります:

  • $JAVA_HOME/conf/security/java.security

disabledAlgorithms設定をコピーする

JDK構成ファイル内には、jdk.tls.disabledAlgorithms=で始まる行があります。この設定は、JDKで無効になっているプロトコルとアルゴリズムを制御します。その設定の値は通常、複数行にわたります。

たとえば、OpenJDK 16では、設定は次のようになります:

テキスト

  1. jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
  2. DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL

Elasticsearch構成ディレクトリ内にes.java.securityという名前の新しいファイルを作成します。JDKのデフォルト構成ファイルからjdk.tls.disabledAlgorithms設定をes.java.securityにコピーします。他の設定をコピーする必要はありません。

必要なTLSバージョンを有効にする

Elasticsearch構成ディレクトリ内のes.java.securityファイルを編集し、jdk.tls.disabledAlgorithms設定を変更して、使用したいSSLまたはTLSバージョンがリストに表示されないようにします。

たとえば、OpenJDK 16でTLSv1.1を有効にするには(前述のjdk.tls.disabledAlgorithms設定を使用)、es.java.securityファイルには、以前に無効にされたTLSアルゴリズムがTLSv1.1を除いて含まれている必要があります:

テキスト

  1. jdk.tls.disabledAlgorithms=SSLv3, TLSv1, RC4, DES, MD5withRSA, \
  2. DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL

カスタムセキュリティ構成を有効にする

カスタムセキュリティポリシーを有効にするには、Elasticsearch構成ディレクトリ内のjvm.options.dディレクトリにファイルを追加します。

カスタムセキュリティポリシーを有効にするには、Elasticsearch構成ディレクトリのjvm.options.dディレクトリ内にjava.security.optionsという名前のファイルを作成し、次の内容を記述します:

テキスト

  1. -Djava.security.properties=/path/to/your/es.java.security

ElasticsearchでのTLSバージョンの有効化

SSL/TLSバージョンは、ssl.supported_protocols設定を介してElasticsearch内で有効または無効にできます。

Elasticsearchは、基盤となるJDKによって有効にされたTLSバージョンのみをサポートします。ssl.supported_procotolsを構成して、JDKで有効になっていないTLSバージョンを含めると、それは静かに無視されます。

同様に、JDKで有効になっているTLSバージョンは、Elasticsearchでssl.supported_protocolsの1つとして構成されない限り使用されません。