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では、設定は次のようになります:
テキスト
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
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
を除いて含まれている必要があります:
テキスト
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, RC4, DES, MD5withRSA, \
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL
カスタムセキュリティ構成を有効にする
カスタムセキュリティポリシーを有効にするには、Elasticsearch構成ディレクトリ内のjvm.options.d
ディレクトリにファイルを追加します。
カスタムセキュリティポリシーを有効にするには、Elasticsearch構成ディレクトリのjvm.options.dディレクトリ内にjava.security.options
という名前のファイルを作成し、次の内容を記述します:
テキスト
-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つとして構成されない限り使用されません。