內容參考Oracle官方文檔:
https://oracle-base.com/articles/misc/configure-tcpip-with-ssl-and-tls-for-database-connections
https://docs.oracle.com/cd/E11882_01/network.112/e40393/asoappf.htm#ASOAG9835
orapki
實用程序用於從命令行管理公用密鑰基礎結構(PKI)元素,例如錢包和證書撤銷列表。這使您可以使用腳本自動執行這些任務。提供一種將PKI元素管理結合到腳本中的方法,可以自動執行許多維護PKI的日常任務
客戶端與服務器端基本環境:
- 服務器端操作系統為CentOS 6.5_x86,安裝並在運行着Oracle11g數據庫,主機名為oracle.lushenle.com,IP地址為192.168.200.249,數據庫實例為orcl
- 客戶端為Windows7操作系統,64位,安裝了Oracle11g客戶端,能正常連接服務器端的數據庫,主機名為ASUS-PC
主要配置步驟:
- 服務器端配置Wallet和生成證書
- 客戶端配置Wallet和生成證書
- 交換證書
- 服務器端網絡配置
- 客戶端網絡配置
- 測試連接
服務器端配置Wallet和生成證書
創建一個新的自動登錄wallet
$ mkdir -p /u01/app/oracle/wallet
$ orapki wallet create -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -auto_login_local
創建一個自簽名證書並將其加載到
$ orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -dn "CN=`hostname`" -keysize 1024 -self_signed -validity 3650
檢查wallet的內容,需要注意的是自簽名證書既是用戶也是可信證書
$ orapki wallet display -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123
導出證書,以便稍后將其加載到客戶的wallet中
$ orapki wallet export -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -dn "CN=`hostname`" -cert /tmp/`hostname`-certificate.crt
檢查證書是否已按預期導出
$ cat /tmp/`hostname`-certificate.crt
客戶端配置Wallet和生成證書
創建一個新的自動登錄wallet
c:\>mkdir d:\app\oracle\wallet
c:\>orapki wallet create -wallet "d:\app\oracle\wallet" -pwd WalletPasswd123 -auto_login_local
創建一個自簽名證書並將其加載到wallet中
c:\>orapki wallet add -wallet "d:\app\oracle\wallet" -pwd WalletPasswd123 -dn "CN=%computername%" -keysize 1024 -self_signed -validity 3650
檢查wallet的內容,需要注意的是自簽名證書既是用戶也是可信證書
c:\>orapki wallet display -wallet "d:\app\oracle\wallet" -pwd WalletPasswd123
導出證書,以便稍后將其加載到服務器中
c:\>orapki wallet export -wallet "d:\app\oracle\wallet" -pwd WalletPasswd123 -dn "CN=%computername%" -cert d:\%computername%-certificate.crt
檢查證書
c:\>more d:\%computername%-certificate.crt
交換證書
連接的每一方都需要相互信任,所以必須從服務器上將證書作為可信證書加載到客戶端wallet中,反之亦然。
遠程連接上服務,使用xftp將證書下載到客戶端,同時也把客戶端證書上傳到服務器,再將服務器證書加載到客戶端wallet中
c:\>orapki wallet add -wallet "d:\app\oracle\wallet" -pwd WalletPasswd123 -trusted_cert -cert d:\oracle.lushenle.com-certificate.crt
檢查客戶wallet的內容,注意服務器證書現在包含在可信證書列表中
c:\>orapki wallet display -wallet "d:\app\oracle\wallet" -pwd WalletPasswd123
將客戶端證書加載到服務器錢包中
$ orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -trusted_cert -cert /tmp/ASUS-PC-certificate.crt
檢查服務器wallet的內容,注意客戶證書現在包含在可信證書列表中
$ orapki wallet display -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123
服務器網絡配置
在服務器上,將以下內容添加到“$ORACLE_HOME/network/admin/sqlnet.ora”文件中
1 WALLET_LOCATION =
2 (SOURCE = 3 (METHOD = FILE) 4 (METHOD_DATA = 5 (DIRECTORY = /u01/app/oracle/wallet) 6 ) 7 ) 8 9 SQLNET.AUTHENTICATION_SERVICES = (TCPS,NTS,BEQ) 10 SSL_CLIENT_AUTHENTICATION = FALSE 11 SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA)
將監聽配置為接受SSL/TLS加密連接。編輯“$ORACLE_HOME/network/admin/listener.ora”文件,添加wallet信息以及TCPS內容
1 SSL_CLIENT_AUTHENTICATION = FALSE 2 3 WALLET_LOCATION = 4 (SOURCE = 5 (METHOD = FILE) 6 (METHOD_DATA = 7 (DIRECTORY = /u01/app/oracle/wallet) 8 ) 9 ) 10 11 LISTENER = 12 (DESCRIPTION_LIST = 13 (DESCRIPTION = 14 (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.lushenle.com)(PORT = 1521)) 15 (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 16 (ADDRESS = (PROTOCOL = TCPS)(HOST = oracle.lushenle.com)(PORT = 2484)) 17 ) 18 ) 19 20 ADR_BASE_LISTENER = /u01/app/oracle
重啟監聽
$ lsnrctl stop
$ lsnrctl start
```好像是 lsnrctl reload 也可以的,不用stop再start```
至此,服務器端已經配置完成
客戶端網絡配置
編輯“$ORACLE_HOME/network/admin/sqlnet.ora”文件,添加以內容
1 WALLET_LOCATION =
2 (SOURCE = 3 (METHOD = FILE) 4 (METHOD_DATA = 5 (DIRECTORY = d:\app\oracle\wallet) 6 ) 7 ) 8 9 SQLNET.AUTHENTICATION_SERVICES = (TCPS,NTS) 10 SSL_CLIENT_AUTHENTICATION = FALSE 11 SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA)
```確保客戶端密碼套件與服務器配置匹配```
編輯“$ORACLE_HOME/network/admin/tnsnames.ora”文件,確保端口對應於在服務器上為SSL配置的端口,協議是TCPS
1 orcl=
2 (DESCRIPTION= 3 (ADDRESS= 4 (PROTOCOL=TCPS) 5 (HOST=192.168.200.249) 6 (PORT=2484) 7 ) 8 (CONNECT_DATA= 9 (SERVER=dedicated) 10 (SID=orcl) 11 ) 12 )
至此,客戶端配置完成,可以連接測試
測試連接
c:\>sqlplus sys/manunkind@//192.168.200.249:2484/orcl
僅僅連接上去,並不能說明數據就是加密傳輸的,還需要進一步的驗證,最簡單的方式的把兩種連接方式下的數據傳輸抓包、分析。這樣才能說明問題。
轉載於:https://www.cnblogs.com/lushengle/p/8352916.html