ウォレット(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を使用することと同じです。
詳細については、「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 WalletsまたはJava KeyStore (JKS)のいずれかを使用してAutonomous Databaseに接続できます。 - JDBC Thinドライバ12.2以前を使用した接続
JDBCドライバの12.2.0.2以前を使用している場合は、アプリケーションを起動する前にJavaプロパティを設定します。 通常、アプリケーション起動スクリプトでプロパティを設定します。 - HTTPプロキシを使用したJDBCシン接続
クライアントがファイアウォールの背後にあり、ネットワーク構成でインターネットに接続するためにHTTPプロキシが必要な場合は、HTTPプロキシを介した接続を有効にするJDBC Thinクライアントの18.1以上を使用する必要があります。
親トピック: JDBC Thin Driverと接続
JDBC Thinドライバ接続前提条件ウォレット(mTLS)接続
JDBC Thinドライバを使用するアプリケーションは、TLSおよび相互TLS (mTLS)認証をサポートします。 mTLS認証を使用するには、データベースへの接続時にOracleウォレットまたはJava KeyStore (JKS)ファイルを含むOracleデータベース資格証明を指定する必要があります。
データベースに接続する前に、次のステップを実行します:
JDBC ThinドライバおよびウォレットでのJDBC URL接続文字列の使用
接続文字列は、クライアント資格証明のダウンロードの一部であるファイルtnsnames.ora
にあります。 tnsnames.ora
ファイルには、事前定義済のサービス名が含まれています。 各サービスには、それぞれ独自のTNS別名と接続文字列があります。
dbname_high
をTNS別名として、接続文字列を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 Walletsまたは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
部分を含まないDB_URL
でTNS別名を次のように設定します:
DB_URL=âjdbc:oracle:thin:@dbname_highâ
詳細は、「Autonomous Databaseのデータベース・サービス名」を参照してください。
18.3 JDBCドライバとのJDBC接続の使用
JDBCシン・ドライバを使用するアプリケーションは、Oracle WalletsまたはJava KeyStore (JKS)を使用してAutonomous Databaseに接続できます。
Oracle Walletの使用
Javaおよび18.3 JDBC Thin Driverを使用してOracle WalletでAutonomous Databaseに接続するには、次の手順を実行します:
-
前提条件が満たされていることを確認してください: 詳細については、JDBC Thinドライバ接続前提条件ウォレット(mTLS)接続を参照してください。
-
接続の確認: Javaプログラム、サーブレットまたはIDEを使用して、データベースへの接続を検証できます。 単純なテストでは、DataSourceSample.javaまたはUCPSample.javaを「JDBCコード・サンプル」からダウンロードし、必要なTNS別名を持つように接続URLを更新して、
TNS_ADMIN
を渡し、tnsnames.ora
およびウォレット・ファイルのパスを提供します。 また、サンプル・ソース・コード内では、データベースのユーザー名とパスワードが更新されます。 たとえば:DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"
ノート:
Microsoft Active Directoryを「データベース」とともに使用している場合、サンプル・ソース・コードでは、ユーザー名をActive Directoryユーザー名で更新し、パスワードをActive Directoryユーザー・パスワードで更新します。 詳細については、「Microsoft Active DirectoryとAutonomous Databaseの使用」を参照してください。 -
ウォレットのロケーションの設定: プロパティ・ファイル
ojdbc.properties
は、ウォレット関連の接続プロパティを使用して事前にロードされています。oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN})))
ノート:
ojdbc.properties
ファイルは変更しません。TNS_ADMIN
の値によってウォレットのロケーションが決定されます。 -
コンパイルおよび実行: サンプルをコンパイルおよび実行して、接続を成功させます。
classpath
にoraclepki.jar
、osdt_core.jar
およびosdt_cert.jar
があることを確認してください。 たとえば: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シン・ドライバを使用してJava KeyStore (JKS)でAutonomous Databaseに接続するには、次の手順を実行します:
-
前提条件が満たされていることを確認してください: 詳細については、JDBC Thinドライバ接続前提条件ウォレット(mTLS)接続を参照してください。
-
データベース詳細の準備完了: Javaプログラム、サーブレットまたはIDEを使用して、データベースへの接続をチェックできます。 簡単なテストとは、DataSourceSample.javaまたはUCPSample.javaを「JDBCコード・サンプル」からダウンロードすることです。 このサンプルでは、次に示すように接続URLを使用します。 接続
DB_URL
には、tnsnames.ora
に存在するdbname_high
など、TNS別名が含まれていることに注意してください。 URLに示すように、TNS_ADMIN
プロパティを介してtnsnames.ora
ファイルのパスを指定できます。 データベースに関連するデータベース・ユーザー名およびパスワードを使用してください。DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"
ノート:
Autonomous DatabaseでMicrosoft Active Directoryを使用している場合は、必ずActive Directoryユーザー名とActive Directoryユーザー・パスワードを使用するようにサンプル・ソース・コードを変更してください。 詳細については、「Microsoft Active DirectoryとAutonomous Databaseの使用」を参照してください。 -
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
JDBC Thinドライバ12.2または以前を使用した接続
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ドライバ接続前提条件ウォレット(mTLS)接続を参照してください。
-
接続の確認: 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ユーザー・パスワードを使用するようにサンプル・ソース・コードを更新します。 詳細については、「Microsoft Active DirectoryとAutonomous Databaseの使用」を参照してください。 -
ウォレットのロケーションの設定 : 一般的に次のようなファイル
java.security
(このファイルは、$JRE_HOME/jre/lib/security/java.security
にあるJREインストールの一部)で、プロバイダ・リストの末尾にOraclePKIProvider
を追加します:security.provider.14=oracle.security.pki.OraclePKIProvider
-
コンパイルおよび実行: サンプルをコンパイルおよび実行して、接続を成功させます。
classpath
にoraclepki.jar
、osdt_core.jar
およびosdt_cert.jar
があることを確認してください。 また、接続プロパティを渡す必要があります。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シン・ドライバを使用して、Java KeyStore (JKS)でAutonomous Databaseに接続するには、次の手順を実行します:
-
前提条件が満たされていることを確認してください: 詳細については、JDBC Thinドライバ接続前提条件ウォレット(mTLS)接続を参照してください。
-
接続の確認: Javaプログラム、サーブレットまたはIDEを使用して、データベースへの接続を検証できます。 簡単なテストは、DataSourceSample.javaまたはUCPSample.javaを「JDBCコード・サンプル」からダウンロードし、必要なTNS別名を持つように接続URLを更新し、
TNS_ADMIN
を渡してtnsnames.ora
のパスを提供し、必要なTNS別名を持つように接続URLを更新することです。 また、サンプル・ソース・コード内では、データベースのユーザー名とパスワードが更新されます。 たとえば:DB_URL="jdbc:oracle:thin:@dbname_highâ
ノート:
Microsoft Active DirectoryをAutonomous Databaseと一緒に使用している場合は、Active Directoryユーザー名およびActive Directoryユーザー・パスワードを使用するようにサンプル・ソース・コードを更新します。 詳細については、「Microsoft Active DirectoryとAutonomous Databaseの使用」を参照してください。 -
コンパイルと実行: サンプルをコンパイルおよび実行して、接続を成功させます。 接続プロパティを次のように渡す必要があります。
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クライアント18.1以上を使用する必要があります。
HTTPSプロキシを介してAutonomous Databaseに接続するには、tnsnames.ora
ファイルを開いて更新します。 HTTPプロキシhostname(https_proxy)とポート(https_proxy_port)を接続文字列に追加します。 値をHTTPSプロキシ情報で置き換えます。 たとえば:
-
tnsnames.ora
の接続定義にHTTPプロキシのホスト名とポートを追加します。 接続定義のアドレス・セクションに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)
)
)
ノート:
-
18.1より前のJDBC Thinクライアント・バージョンでは、HTTPプロキシを介した接続はサポートされません。
-
正常な接続は特定のプロキシ構成に依存し、データ転送のパフォーマンスはプロキシ容量に依存します。 Oracleは、パフォーマンスがクリティカルな本番環境ではこの機能の使用をお薦めしません。
-
tnsnames.ora
をHTTPプロキシ用に構成しても、組織のネットワーク構成とセキュリティ・ポリシーによっては十分でない場合があります。 たとえば、一部のネットワークでは、HTTPプロキシのユーザー名とパスワードが必要です。 -
いずれの場合も、ネットワーク管理者に連絡し、HTTPプロキシを介さずに、関連するポートを使用して
oraclecloud.com
ドメインのホストへのアウトバウンド接続をオープンしてください。