1. 程式人生 > >How to use Oracle Wallet

How to use Oracle Wallet

傳輸 reat 字符 pass protocol 形式 port 方式 賬號

Wallet可以將其當作一種免密連接的方式,在DB端配置好wallet,然後將驗證文件拷貝到客戶端,客戶端在使用這個連接的時候就可以不用密碼登陸了。

簡單配置:

1,創建一個存儲wallet的位置:mkdir -p /tmp/wallet/orcl

2,在tnsnames.ora裏面配置你的連接串:

  ORCL_WALLET= 
   (DESCRIPTION= 
     (ADDRESS=((PROTOCOL=tcp)(HOST=test1.com)(PORT=1630))) 
    (CONNECT_DATA= (SERVICE_NAME=ORCL)))
   

3,使用mkstore創建wallet:  mkstore -wrl <wallet_location> -create

  mkstore -wrl /tmp/wallet -create

  這一步會生成 cwallet.ssoewallet.p12, cwallet.sso是auto login wallet, 用於免去交互式密碼登錄,ewallet.p12則是PKCS #12 wallet,用來存儲傳輸個人登錄認證信息。

4,往wallet裏面添加認證信息: mkstore -wrl <wallet_location> -createCredential <db_connect_string> <username> <password>

  例子,比如說配置賬號為scott,密碼為tiger的免密登錄:

  mkstore -wrl /tmp/wallet/orcl -createCredential ORCL_WALLET scott tiger

  小tips:

  a,推薦使用tnsnames.ora配置連接串的方式

  b,如果你使用的不是tnsnames.ora來配置<db_connect_string>的話,而是使用 (DESCRIPTION= (ADDRESS=((PROTOCOL=tcp)(HOST=test1.com)(PORT=1630))) (CONNECT_DATA= (SERVICE_NAME=ORCL)))這種形式,你要註意使用雙引號將其包含起來,因為任何特殊字符都會導致失敗

  c,你可以在客戶端保存多個DB多個wallet,但是在服務端,你不能往一個wallet裏面添加多個登錄認證信息,比如說,你創建了一個wallet,然後往這個wallet添加了用戶scott,那麽就算你是同一個DB的,你也不能再往這個wallet裏面添加其他用戶了。多個schema要配置多個wallet。

測試:

1,在sqlnet.ora裏面配置  

WALLET_LOCATION =
   (SOURCE =
     (METHOD = FILE)
     (METHOD_DATA =
       (DIRECTORY = /tmp/wallet/orcl)
     )
    )

SQLNET.WALLET_OVERRIDE = TRUE
SSL_CLIENT_AUTHENTICATION = FALSE
Note: 當一個應用使用了SSL加密的話,SQLNET.WALLET_OVERRIDE設置為true,它會在SSL認證後,使用wallet中存儲的用戶密碼認證DB

2,在tnsnames.ora裏面配置,註意alias必須跟你之前創建wallet的時候一樣,不然會認證失敗

  ORCL_WALLET= 
   (DESCRIPTION= 
     (ADDRESS=((PROTOCOL=tcp)(HOST=test1.com)(PORT=1630))) 
    (CONNECT_DATA= (SERVICE_NAME=ORCL)))    

3,測試,連接串也是使用相同的alias

  sqlplus /@ORCL_WALLET

其他的一些管理:

1,用戶更新密碼後,記得更新wallet

mkstore -wrl <wallet_location> -modifyCredential <dbase_alias> <username> <password>

2,DB信息更新後,記得更新tnsnames.ora

3,刪除wallet裏面的認證信息

mkstore -wrl <wallet_location> -deleteCredential <db_alias>

How to use Oracle Wallet