TLSv1.2を使用してデータベースに接続するようにOracleJDBCシンドライバを構成するための手順は次のとおりです(データベース構成が正しいことを前提としています)。
ステップ1:バグ19030178のパッチを適用します(12.2.0.1以降は不要)
TLSv1.2を許可するバグ19030178のパッチを適用する必要があります。パッチはTLSv1.2を許可しますが、デフォルトでは有効にしないことに注意してください。したがって、12.1.0.2のパッチが適用されたドライバでは、oracle.net.ssl_version='1.2'も設定する必要があります。このプロパティは、システムプロパティとして(-Dを使用して)、またはデータソースプロパティを介して設定できます。
ステップ2:JCEファイルをインストールする
Java Cryptography Extension(JCE)ファイルがないと、強力な暗号スイート(TLS_RSA_WITH_AES_256_CBC_SHA256など)は有効になりません。したがって、JDK7またはJDK8のどちらを使用している場合でも、JCE Unlimited Strength JurisdictionPolicyFilesをインストールする必要があります。これらのファイルは、OracleのWebサイトにあります。
ステップ3:常にJDKの最新の更新を使用する
TLSv1.2に必要なバグが修正されているため、必ずJDK7またはJDK8の最新のアップデートを使用してください。
ステップ4:ウォレットの代わりにJKSファイルを使用する
すでにそれを行っているように見えますが、他の人が見ることができます。ウォレットは、追加のjarと追加のプロパティを必要とするため、OracleJDBCシンドライバでの構成と使用が複雑です。一方、JKSファイルはJREでネイティブにサポートされており、私の経験では、常にうまく機能しています。
ステップ5:JDK7を使用する場合は、強力な暗号スイートを明示的に有効にします
JDK8を使用する場合、この手順は必要ありません。 JDK7では、TLS_RSA_WITH_AES_256_CBC_SHA256などの強力な暗号スイートを使用している場合は、oracle.net.ssl_cipher_suites接続プロパティを使用して有効にする必要があります。
ステップ6:-Djavax.net.debug =allを使用してデバッグする
最後に、さらに問題が発生した場合は、トレースをオンにして、-Djavax.net.debug=allを使用して何が起こっているかを確認できます。
====JDK7と12.1.0.2パッチ付きシンドライバーの例=====
java -Doracle.net.ssl_version='1.2' -Doracle.net.ssl_cipher_suites='(TLS_RSA_WITH_AES_256_CBC_SHA256)' -Doracle.net.ssl_server_dn_match='true' -Djavax.net.ssl.trustStore='truststore.jks' -Djavax.net.ssl.trustStorePassword='welcome1' -Djavax.net.ssl.keyStore='keystore.jks' -Djavax.net.ssl.keyStorePassword='welcome1' JDBCTest 'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=host)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=myservice))(security=(ssl_server_cert_dn="CN=name,O=org,L=city,ST=state,C=country")))' 'pdb1' 'welcome1'
====JDK8と12.1.0.2パッチ付きシンドライバーの例=====
java -Doracle.net.ssl_version='1.2' -Doracle.net.ssl_server_dn_match='true' -Djavax.net.ssl.trustStore='truststore.jks' -Djavax.net.ssl.trustStorePassword='welcome1' -Djavax.net.ssl.keyStore='keystore.jks' -Djavax.net.ssl.keyStorePassword='welcome1' JDBCTest 'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=host)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=myservice))(security=(ssl_server_cert_dn="CN=name,O=org,L=city,ST=state,C=country")))' 'pdb1' 'welcome1'