Wallet (mTLS)を使用したJDBC Thin接続
Autonomous Databaseでは、トランスポート層セキュリティ(TLSv1.2)を使用するセキュアな接続が必要です。ネットワーク構成オプションに応じて、Autonomous DatabaseではmTLS認証とTLS認証がサポートされます。
JDK8u162以上のJDBC Thinドライバを使用する接続に、mTLSではなくTLSを使用する場合、ウォレットは必要ありません。TLS接続は、次のネットワーク構成に対して有効です:
-
プライベート・エンドポイントのみ: プライベート・エンドポイントを使用したネットワーク構成
-
許可されたIPおよびVCNからのセキュア・アクセスのみ: アクセス制御リスト(ACL)を使用した構成
Autonomous DatabaseがACLのないパブリック・エンドポイント上にある場合は、CIDR ACLとして
0.0.0.0/0
を追加し、TLS認証を有効にできます。CIDR ACLとしての0.0.0.0/0
の追加は、ACLのないパブリック・エンドポイント上にAutonomous Databaseを持つことと同じです。
詳細は、TLS認証についてを参照してください。
- ウォレット(mTLS)を使用した接続の前提条件
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に接続できます。 - 12.2以前のJDBC Thinドライバを使用した接続
JDBCドライバの12.2.0.2以前の場合は、アプリケーションを起動する前にJavaプロパティを設定します。通常、プロパティはアプリケーションの起動スクリプトで設定します。 - HTTPプロキシを使用したJDBC Thin接続
クライアントがファイアウォール内に存在し、インターネットに接続するためにネットワーク構成でHTTPプロキシが必要な場合、HTTPプロキシを介した接続を可能にするJDBC Thin Client 18.1以上を使用する必要があります。
親トピック: JDBC Thin Driverへの接続
ウォレット(mTLS)を使用した接続のためのJDBC Thinドライバ接続の前提条件
JDBC Thinドライバを使用するアプリケーションは、TLS認証および相互TLS (mTLS)認証をサポートしています。mTLS認証を使用するには、データベースへの接続時にOracleウォレットまたはJava KeyStore (JKS)ファイルを含むOracleデータベース資格証明を指定する必要があります。
データベースに接続する前に、次のステップを実行します:
JDBC ThinドライバおよびウォレットでのJDBC URL接続文字列の使用
接続文字列は、クライアント資格証明ダウンロードの一部であるtnsnames.ora
ファイルにあります。tnsnames.ora
ファイルには、事前定義済のサービス名が記述されています。各サービスには、独自のTNS別名および接続文字列があります。
tnsnames.ora
にTNS別名および接続文字列としてdbname_high
を指定したサンプル・エントリを次に示します: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”
詳細については、Database Service Names for Autonomous Databaseを参照してください。
18.3 JDBCドライバとのJDBC接続の使用
JDBC Thinドライバを使用するアプリケーションは、OracleウォレットまたはJava KeyStore (JKS)のいずれかを使用してAutonomous Databasesに接続できます。
Oracle Walletの使用
Javaおよび18.3 JDBC Thinドライバを使用してOracle WalletでAutonomous Databaseに接続するには、次を実行します:
-
前提条件が満たされていることの確認: 詳細は、ウォレット(mTLS)を使用した接続のための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に接続するには、次の手順を実行します。
-
前提条件が満たされていることの確認: 詳細は、ウォレット(mTLS)を使用した接続のための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"
ノート
Microsoft Active DirectoryをAutonomous Databaseで使用している場合は、Active Directoryユーザー名およびActive Directoryユーザー・パスワードを使用するようにサンプル・ソース・コードを変更してください。詳細は、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プロパティを設定します。通常、プロパティはアプリケーションの起動スクリプトで設定します。
最新の18.3 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に接続するには、次を実行します:
-
前提条件が満たされていることの確認: 詳細は、ウォレット(mTLS)を使用した接続のためのJDBC Thinドライバ接続の前提条件を参照してください。
-
接続の検証: Javaプログラム、サーブレットまたはIDEを使用して、データベースへの接続を検証できます。簡単なテストとして、DataSourceSample.javaまたはUCPSample.javaをJDBCコード・サンプルからダウンロードし、必要なTNS別名を持つように接続URLを更新します。また、データベース・ユーザー名とパスワードを使用するようにサンプル・ソース・コードを更新します。たとえば:
DB_URL="jdbc:oracle:thin:@dbname_high”
ノート
Microsoft Active DirectoryをAutonomous Databaseで使用している場合は、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に接続するには、次の手順を実行します:
-
前提条件が満たされていることの確認: 詳細は、ウォレット(mTLS)を使用した接続のためのJDBC Thinドライバ接続の前提条件を参照してください。
-
接続の検証: Javaプログラム、サーブレットまたはIDEを使用して、データベースへの接続を検証できます。簡単なテストとして、DataSourceSample.javaまたはUCPSample.javaをJDBCコード・サンプルからダウンロードし、必要なTNS別名を持つように接続URLを更新し、
tnsnames.ora
のパスを指定してTNS_ADMIN
を渡し、必要なTNS別名を持つように接続URLを更新できます。また、サンプル・ソース・コードでは、データベース・ユーザー名とパスワードを更新します。例:DB_URL="jdbc:oracle:thin:@dbname_high”
ノート
Microsoft Active DirectoryをAutonomous Databaseで使用している場合は、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プロキシを介した接続はサポートされていません。
-
接続が成功するかどうかは、特定のプロキシ構成に依存し、データ転送のパフォーマンスはプロキシ容量に依存します。Oracleでは、パフォーマンスが重要な本番環境でこの機能を使用することはお薦めしません。
-
tnsnames.ora
をHTTPプロキシ用に構成しても、組織のネットワーク構成とセキュリティ・ポリシーによっては十分でない場合があります。たとえば、一部のネットワークではHTTPプロキシのユーザー名とパスワードが必要です。 -
いずれの場合も、HTTPプロキシを経由せずに、関連するポートを使用して
oraclecloud.com
ドメイン内のホストへのアウトバウンド接続を開くには、ネットワーク管理者に連絡してください。