ウォレットを使用したJDBC Thin接続(mTLS)
Autonomous Databaseでは、トランスポート層セキュリティ(TLSv1.2)を使用するセキュアな接続が必要です。ネットワーク構成オプションに応じて、Autonomous DatabaseはmTLSおよびTLS認証をサポートしています。
JDK8u162以上のJDBC Thinドライバを使用する接続にmTLSではなくTLSを使用する場合、ウォレットは必要ありません。TLS接続は、次のネットワーク構成に対して有効です。
-
プライベート・エンドポイント・アクセスのみ: プライベート・エンドポイントを含むネットワーク構成
-
許可されたIPおよびVCNsからのセキュア・アクセスのみ: アクセス制御リスト(ACL)を使用した構成
Autonomous DatabaseがACLのないパブリック・エンドポイントにある場合は、
0.0.0.0/0
をCIDR ACLとして追加し、TLS認証を有効にできます。CIDR ACLとして0.0.0.0/0
を追加することは、ACLのないパブリック・エンドポイントにAutonomous Databaseを設定することと同じです。
詳細は、mTLSまたはTLSを使用したAutonomous Databaseへのセキュアな接続を参照してください。
- ウォレット(mTLS)を使用したJDBC Thinドライバ接続の前提条件接続
JDBC Thinドライバを使用するアプリケーションは、TLSおよび相互TLS (mTLS)認証をサポートします。mTLS認証を使用するには、データベースへの接続時に、OracleウォレットまたはJava KeyStore (JKS)ファイルを含むOracleデータベース資格証明を指定する必要があります。 - JDBC ThinドライバおよびウォレットでのJDBC URL接続文字列の使用
接続文字列は、クライアント資格証明ダウンロードの一部であるtnsnames.ora
ファイルにあります。tnsnames.ora
ファイルには、事前定義済のサービス名が記述されています。各サービスには、独自のTNS別名および接続文字列があります。 - 18.3 JDBCドライバでのJDBC接続の使用
JDBC Thinドライバを使用するアプリケーションは、OracleウォレットまたはJava KeyStore (JKS)のいずれかを使用してAutonomous Databasesに接続できます。 - JDBC Thinドライバ12.2以前を使用した接続
JDBCドライバ12.2.0.2以前を使用している場合は、アプリケーションを起動する前にJavaプロパティを設定します。通常、プロパティはアプリケーションの起動スクリプトで設定します。 - HTTPプロキシを使用したJDBC Thin接続
クライアントがファイアウォールの背後に存在し、ネットワーク構成でHTTPプロキシを使用してインターネットに接続する必要がある場合は、HTTPプロキシを介した接続を可能にするJDBC Thin Client 18.1以上を使用する必要があります。
親トピック: JDBC Thinドライバとの接続
ウォレット(mTLS)を使用したJDBC Thinドライバ接続の前提条件接続
JDBC Thinドライバを使用するアプリケーションは、TLSおよび相互TLS (mTLS)認証をサポートしています。mTLS認証を使用するには、データベースへの接続時に、OracleウォレットまたはJava KeyStore (JKS)ファイルを含むOracleデータベース資格証明を指定する必要があります。
データベースに接続する前に、次のステップを実行します:
JDBC ThinドライバおよびウォレットでのJDBC URL接続文字列の使用
接続文字列は、クライアント資格証明ダウンロードの一部であるtnsnames.ora
ファイルにあります。tnsnames.ora
ファイルには、事前定義済のサービス名が記述されています。各サービスには、独自のTNS別名および接続文字列があります。
dbname_high
を使用し、tnsnames.ora
に接続文字列を指定したサンプル・エントリを次に示します:dbname_high= (description=
(address=(protocol=tcps)(port=1522)(host=adb.example.oraclecloud.com))
(connect_data=(service_name=dbname_high.oraclecloud.com))(security=(ssl_server_dn_match=yes)))
次のいずれかの方法で、プロパティTNS_ADMIN
を使用してtnsnames.ora
の場所を設定します:
- 接続文字列の一部として(18.3以降のJDBCドライバの場合のみ)
- システム・プロパティ
-Doracle.net.tns_admin
として - 接続プロパティとして(
OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN
)
18.3 JDBCドライバを使用すると、接続文字列にTNS別名とTNS_ADMIN
接続プロパティが含まれます。
18.3 JDBCドライバを使用した接続文字列のサンプル(Linux):
DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"
18.3 JDBCドライバを使用した接続文字列のサンプル(Windows):
DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=C:\\Users\\test\\wallet_dbname"
TNS_ADMIN
接続プロパティは、次を指定します:
tnsnames.ora
の場所。- Oracle Wallet (
ewallet.sso
、ewallet.p12
)またはJava KeyStore (JKS)ファイル(truststore.jks
、keystore.jks
)の場所。 ojdbc.properties
の場所。このファイルには、OracleウォレットまたはJava KeyStore (JKS)を使用するために必要な接続プロパティが含まれています。
12.2.0.1以前のJDBCドライバを使用している場合、接続文字列にはTNS別名のみが含まれます。古いJDBCドライバを使用して接続するには:
tnsnames.ora
の場所を、-Doracle.net.tns_admin
を持つシステム・プロパティまたは接続プロパティ(OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN
)として設定します。TNS_ADMIN
に加えて、ウォレットまたはJKS関連の接続プロパティを設定します。
たとえば、この場合、次のように、TNS_ADMIN
部分を含まないTNS別名をDB_URL
に設定します:
DB_URL=”jdbc:oracle:thin:@dbname_high”
詳細は「Autonomous Databaseのデータベース・サービス名」を参照してください。
18.3 JDBCドライバとのJDBC接続の使用
JDBC Thinドライバを使用するアプリケーションは、OracleウォレットまたはJava KeyStore (JKS)を使用してAutonomous Databaseに接続できます。
Oracle Walletの使用
Javaおよび18.3 JDBC Thinドライバを使用してOracle WalletでAutonomous Databaseに接続するには、次のステップを実行します。
-
前提条件が満たされていることを確認します: 詳細は、「JDBC Thinドライバ接続のウォレット接続の前提条件」を参照してください。
-
接続の検証: Javaプログラム、サーブレットまたはIDEを使用して、データベースへの接続を検証できます。簡単なテストとして、DataSourceSample.javaまたはUCPSample.javaをJDBCコード・サンプルからダウンロードし、必要なTNS別名を持つように接続URLを更新し、
tnsnames.ora
およびウォレット・ファイルのパスを指定してTNS_ADMIN
を渡すことができます。また、サンプル・ソース・コードでは、データベース・ユーザー名とパスワードを更新します。たとえば:DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"
ノート
データベースでMicrosoft Active Directoryを使用している場合、サンプル・ソース・コードでは、ユーザー名をActive Directoryユーザー名でアップデートし、パスワードをActive Directoryユーザー・パスワードでアップデートします。詳細は、Autonomous DatabaseでのMicrosoft Active Directoryの使用を参照してください。 -
ウォレット・ロケーションの設定: プロパティ・ファイル
ojdbc.properties
には、ウォレット関連の接続プロパティが事前にロードされています。oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN})))
ノート
ファイルojdbc.properties
は変更しないでください。TNS_ADMIN
の値によって、ウォレット・ロケーションが決まります。 -
コンパイルして実行: サンプルをコンパイルして実行し、正常な接続を取得します。
oraclepki.jar
、osdt_core.jar
およびosdt_cert.jar
がclasspath
にあることを確認します。たとえば:java –classpath ./lib/ojdbc8.jar:./lib/ucp.jar:./lib/oraclepki.jar:./lib/osdt_core.jar:./lib/osdt_cert.jar:. UCPSample
Autonomous Databaseのダウンロードされたクライアント資格証明zipファイルの自動ログイン・ウォレットを使用すると、アプリケーションではユーザー名/パスワード認証を使用する必要がなくなります。
Java KeyStoreの使用
Javaおよび18.3 JDBC Thinドライバを使用してJava KeyStore (JKS)でAutonomous Databaseに接続するには、次のステップを実行します。
-
前提条件が満たされていることを確認します: 詳細は、「JDBC Thinドライバ接続のウォレット接続の前提条件」を参照してください。
-
データベースの詳細の準備: Javaプログラム、サーブレットまたはIDEを使用して、データベースへの接続を確認できます。簡単なテストとして、DataSourceSample.javaまたはUCPSample.javaをJDBCコード・サンプルからダウンロードできます。このサンプルでは、次に示すように接続URLを使用します。接続
DB_URL
にはTNS別名(tnsnames.ora
に存在するdbname_high
など)が含まれていることに注意してください。URLに示すように、TNS_ADMIN
プロパティを介してtnsnames.ora
ファイルのパスを指定できます。データベースに関連するデータベース・ユーザー名とパスワードを使用してください。DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"
Note
If you are using Microsoft Active Directory with Autonomous Database, then make sure to change the sample source code to use the Active Directory username and the Active Directory user password.詳細は、Autonomous DatabaseでのMicrosoft Active Directoryの使用を参照してください。 -
JKS関連の接続プロパティの設定: JKS関連の接続プロパティを
ojdbc.properties
ファイルに追加します。keyStoreおよびトラストストアのパスワードは、クライアント資格証明.zip
ファイルをダウンロードするときに指定したパスワードですOracle WalletのかわりにSSL接続を使用するには、キーストア・ファイルとトラストストア・ファイル、およびそれぞれのパスワードを
ojdbc.properties
ファイルで次のように指定します:# Properties for using Java KeyStore (JKS) oracle.net.ssl_server_dn_match=true javax.net.ssl.trustStore==${TNS_ADMIN}/truststore.jks javax.net.ssl.trustStorePassword=password javax.net.ssl.keyStore==${TNS_ADMIN}/keystore.jks javax.net.ssl.keyStorePassword=password
ノート
ojdbc.properties
のウォレット関連のプロパティをコメント化してください。たとえば:# Property for using Oracle Wallets # oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN})))
-
コンパイルして実行: サンプルをコンパイルして実行し、正常な接続を取得します。たとえば:
java –classpath ./lib/ojdbc8.jar:./lib/ucp.jar UCPSample
12.2以前のJDBC Thinドライバを使用した接続
JDBCドライバの12.2.0.2以前を使用している場合は、アプリケーションを起動する前にJavaプロパティを設定します。通常、プロパティはアプリケーションの起動スクリプトで設定します。
最新のJDBCドライバを使用できない場合は、12.2.0.2またはその他の古いJDBCドライバを使用してAutonomous Databaseに接続できます。12.2以前のJDBCドライバは、ojdbc.properties
ファイルをサポートしていません。古いバージョンのJDBCドライバでは、接続を確立するには、ウォレットまたはJKS関連プロパティをシステム・プロパティまたは接続プロパティとして渡す必要があります。
Oracle Walletの使用
Javaおよび12.2以上のJDBCドライバを使用してOracle WalletでAutonomous Databaseに接続するには、次のステップを実行します。
-
前提条件が満たされていることを確認します: 詳細は、「JDBC Thinドライバ接続のウォレット接続の前提条件」を参照してください。
-
接続の検証: Javaプログラム、サーブレットまたはIDEを使用して、データベースへの接続を検証できます。簡単なテストとして、DataSourceSample.javaまたはUCPSample.javaをJDBCコード・サンプルからダウンロードし、必要なTNS別名を持つように接続URLを更新できます。また、データベース・ユーザー名とパスワードを使用するようサンプル・ソース・コードを更新します。たとえば:
DB_URL="jdbc:oracle:thin:@dbname_high”
ノート
Autonomous DatabaseでMicrosoft Active Directoryを使用している場合、サンプル・ソース・コードでActive Directoryユーザー名およびActive Directoryユーザー・パスワードを使用するように更新してください。詳細は、Autonomous DatabaseでのMicrosoft Active Directoryの使用を参照してください。 -
ウォレット・ロケーションの設定: ファイル
java.security
内のプロバイダ・リストの最後に、通常は次のようなOraclePKIProvider
を追加します(このファイルは、$JRE_HOME/jre/lib/security/java.security
にあるJREインストールの一部です)。security.provider.14=oracle.security.pki.OraclePKIProvider
-
コンパイルして実行: サンプルをコンパイルして実行し、正常な接続を取得します。
oraclepki.jar
、osdt_core.jar
およびosdt_cert.jar
がclasspath
にあることを確認します。また、接続プロパティを渡す必要があります。tnsnames.ora
およびウォレット・ファイルが存在する場所でプロパティを更新します。java –classpath ./lib/ojdbc8.jar:./lib/ucp.jar:./lib/oraclepki.jar:./lib/osdt_core.jar:./lib/osdt_cert.jar:. -Doracle.net.tns_admin=/users/test/wallet_dbname -Doracle.net.ssl_server_dn_match=true -Doracle.net.ssl_version=1.2 (Not required for 12.2) -Doracle.net.wallet_location= “(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/users/test/wallet_dbname)))” UCPSample
これらはWindowsシステムの例です。UNIX (LinuxまたはMac)の複数の行で
–D
プロパティを設定している場合は、\
続き文字を追加します。
Java KeyStoreの使用
Javaおよび12.2以上のJDBC Thinドライバを使用してJava KeyStore (JKS)でAutonomous Databaseに接続するには、次のステップを実行します。
-
前提条件が満たされていることを確認します: 詳細は、「JDBC Thinドライバ接続のウォレット接続の前提条件」を参照してください。
-
接続の検証: Javaプログラム、サーブレットまたはIDEを使用して、データベースへの接続を検証できます。簡単なテストとして、DataSourceSample.javaまたはUCPSample.javaをJDBCコード・サンプルからダウンロードし、必要なTNS別名を持つように接続URLを更新し、
tnsnames.ora
のパスを指定してTNS_ADMIN
を渡し、必要なTNS別名を持つように接続URLを更新することができます。また、サンプル・ソース・コードでは、データベース・ユーザー名とパスワードを更新します。たとえば:DB_URL="jdbc:oracle:thin:@dbname_high”
ノート
Autonomous DatabaseでMicrosoft Active Directoryを使用している場合、サンプル・ソース・コードでActive Directoryユーザー名およびActive Directoryユーザー・パスワードを使用するように更新してください。詳細は、Autonomous DatabaseでのMicrosoft Active Directoryの使用を参照してください。 -
コンパイルして実行: サンプルをコンパイルして実行し、正常な接続を取得します。次に示すように、接続プロパティを渡す必要があります。
tnsnames.ora
およびJKSファイルが存在する場所でプロパティを更新します。これらの接続プロパティをプログラムで渡す場合は、「DataSourceForJKS.java」を参照してください。たとえば:java -Doracle.net.tns_admin=/users/test/wallet_dbname -Djavax.net.ssl.trustStore=truststore.jks -Djavax.net.ssl.trustStorePassword=********** -Djavax.net.ssl.keyStore=keystore.jks -Djavax.net.ssl.keyStorePassword=************ -Doracle.net.ssl_server_dn_match=true -Doracle.net.ssl_version=1.2 // Not required for 12.2
HTTPプロキシを使用したJDBC Thin接続
クライアントがファイアウォールの背後に存在し、インターネットに接続するためにネットワーク構成でHTTPプロキシが必要な場合、HTTPプロキシを介した接続を可能にするJDBC Thin Client 18.1以前を使用する必要があります。
HTTPSプロキシを介してAutonomous Databaseに接続するには、tnsnames.ora
ファイルを開いて更新します。HTTPプロキシのホスト名(https_proxy)とポート(https_proxy_port)を接続文字列に追加します。値をHTTPSプロキシ情報に置き換えます。たとえば:
-
HTTPプロキシのホスト名とポートを、
tnsnames.ora
の接続定義に追加します。接続定義のアドレス・セクションにhttps_proxyおよびhttps_proxy_portパラメータを追加する必要があります。たとえば、次のセクションではHTTPプロキシをproxyhostname
に、HTTPプロキシ・ポートを80
に設定します(これらの値は、各お客様のHTTPプロキシ情報に置き換えてください)。
db2022adb_high =
(description=
(address=
(https_proxy=proxyhostname)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.example.oraclecloud.com)
)
(connect_data=(service_name=db2022adb_high.adb.oraclecloud.com)
)
(security=security=(ssl_server_dn_match=yes)
)
)
-
また、JDBC Thin Client 18.1より前のバージョンでは、HTTPプロキシ経由の接続はサポートされていません。
-
接続が成功するかどうかは、特定のプロキシ構成によって決まり、データ転送のパフォーマンスはプロキシ容量によって決まります。パフォーマンスが重要な本番環境ではこの機能を使用しないことをお薦めします。
-
組織のネットワーク構成およびセキュリティ・ポリシーによっては、HTTPプロキシの
tnsnames.ora
を構成するのみでは不十分です。たとえば、一部のネットワークでは、HTTPプロキシのユーザー名とパスワードが必要です。 -
いかなる場合も、HTTPプロキシを介さずに、関連するポートを使用して
oraclecloud.com
ドメイン内のホストへのアウトバウンド接続を開くには、ネットワーク管理者に連絡してください。