How to use Oracle Wallet

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.sso 和 ewallet.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配置连接串的方式

扫描二维码关注公众号,回复: 6212361 查看本文章

  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>

猜你喜欢

转载自www.cnblogs.com/ryanw/p/10853039.html