2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Oracle Cloud] Base Database ServiceからAutonomous DatabaseにWalletを使ったmTLS接続とBase Database のPDBへの接続の併用(2023/02/20)

Last updated at Posted at 2023-02-20

はじめに

Oracle Cloud Infrastructure Base Database ServiceからAutonomous DatabaseにWalletを使ったmTLS接続とBase Database のPDBへの接続の併用するtnanames.oraの記述を試してみました。
Autonomous Databaseへのtls接続ができないバージョンのBase DatabaseからのDatabase Linkの作成が簡便になります。

ウォレット ( Wallet ) のダウンロード・解凍

Autonomous Database接続用のウォレットをダウンロードし、Base Databaseのノードでoracleユーザで解凍します。

unzip Wallet_ADB.zip /home/oracle/wallet
Archive:  ../Wallet_ADB.zip
  inflating: ewallet.pem             
  inflating: README                  
  inflating: cwallet.sso             
  inflating: tnsnames.ora            
  inflating: truststore.jks          
  inflating: ojdbc.properties        
  inflating: sqlnet.ora              
  inflating: ewallet.p12             
  inflating: keystore.jks     

Base Databaseのtnsnames.oraの編集

解凍したtnsnames.oraから Autonomous Database接続用の TNSエントリを Base Databaseの $ORACLE_HOME/network/admin/tnsnames.ora に追記します。

$ more $ORACLE_HOME/network/admin/tnsnames.ora 

adb_low=(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=XXXXXXX_adb_low.adb.oraclecloud.com))(s
ecurity=(ssl_server_dn_match=no)))

追加したTNSエントリに MY_WALLET_DIRECTORY パラメータを追記します。MY_WALLET_DIRECTORYには、ウォレットを解凍したディレクトリを指定します。
(ssl_server_dn_match=no) の次に追記します。

$ more $ORACLE_HOME/network/admin/tnsnames.ora 

adb_low=(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=XXXXXXX_adb_low.adb.oraclecloud.com))(s
ecurity=(ssl_server_dn_match=no)(MY_WALLET_DIRECTORY=/home/oracle/wallet)))

Base Databaseのsqlnet.oraの編集

Base Databaseの $ORACLE_HOME/network/admin/sqlnet.ora のSQLNET.ENCRYPTION_CLIENT と SQLNET.CRYPTO_CHECKSUM_CLIENT の値を「 ACCEPTED 」に変更します。

# SQLNET.ENCRYPTION_CLIENT=REQUIRED
# SQLNET.CRYPTO_CHECKSUM_CLIENT=REQUIRED
SQLNET.ENCRYPTION_CLIENT=ACCEPTED
SQLNET.CRYPTO_CHECKSUM_CLIENT=ACCEPTED

接続の確認

$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Mon Feb 20 10:00:00 2023

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c EE High Perf Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options

SQL> conn scott/<PASSWORD>@adb_low
Connected.
SQL> conn scott/<PASSWORD>@PDB
Connected.
tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.1.0.2/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
adb_low=(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=XXXXXXX_adb_low.adb.oraclecloud.com))(s
ecurity=(ssl_server_dn_match=no)(MY_WALLET_DIRECTORY=/home/oracle/wallet)))

PDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = db01)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME =pdb1.oraclevcn.com)
    )
  )
sqlnet.ora
ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME)))

SQLNET.ENCRYPTION_SERVER=REQUIRED
SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER=(AES256,AES192,AES128)
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER=(SHA1)
# SQLNET.ENCRYPTION_CLIENT=REQUIRED
# SQLNET.CRYPTO_CHECKSUM_CLIENT=REQUIRED
SQLNET.ENCRYPTION_CLIENT=ACCEPTED
SQLNET.CRYPTO_CHECKSUM_CLIENT=ACCEPTED
SQLNET.ENCRYPTION_TYPES_CLIENT=(AES256,AES192,AES128)
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT=(SHA1)
SQLNET.EXPIRE_TIME=10

おわりに

MY_WALLET_DIRECTORYパラメータで環境変数ではなくtnsnames.oraのサービスエントリ内でウォレットの場所を指定できました。これにより複数のウォレットを使い分けることができます。(別リージョンや別テナントのADBへの接続など)
Database Link作成時のUSING句に TNSサービス名を指定できます。

参考情報

編集前の接続時エラー例

SQL> conn scott/Welcome1#Welocme1#@adb_low
ERROR:
ORA-28759: failure to open file

tnsnames.oraのみ編集後の接続時エラー例

SQL> conn scott/<PASSWORD>@adb_low
ERROR:
ORA-12696: Double Encryption Turned On, login disallowed
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?