您的位置:首页 > 数据库 > Oracle

Oracle Databasae wallet使用指南

2015-11-17 22:47 429 查看
Oracle从10gR2开始就提供了wallet,用于解决用户认证信息(用户名和密码)的存放问题,通过使用wallet可以实现无密码登录数据库,

这样一来就不需要在应用程序中嵌入数据库密码(或者在配置文件中明文存放密码),同时更加方便维护大量服务器的环境的数据库密码维护工作,

因为可以直接分发wallet文件,实现批量修改密码。

另外,如果我们在pl/sql中使用utl_http包访问需要用户名和密码的url时,也可以不用将用户名和密码嵌入代码中,而直接让其访问wallet中的认证信息,类似于

web容器中使用jndi的方式访问数据源

下面我们以windows 7 + oracle client 11.2.0.1.0环境为例,讲解具体使用方法。

注:使用oracle wallet只需安装oracle database client即可。

一、创建wallet

1、创建wallet

语法:mkstore -wrl <wallet_location> -create

D:\app\Oracle>mkstore -wrl . -create                   ---- wrl参数后跟wallet的存放路径,点表当前目录

Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production

版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。

输入口令:                         ----------输入自定义的wallet密码,该密码是打开wallet的时候需要提供的密码,与数据库密码无关

再次输入口令:                  ----------确认自定义的wallet密码 

D:\app\Oracle>dir .

 驱动器 D 中的卷没有标签。

 卷的序列号是 BA8C-3377

 D:\app\Oracle 的目录

2015/11/17  21:55    <DIR>          .

2015/11/17  21:55    <DIR>          ..

2015/11/17  21:55             3,589 cwallet.sso    ---对应的wallet文件

2015/11/17  21:55             3,512 ewallet.p12   ---对应的wallet文件

2013/11/18  11:45    <DIR>          Middleware

               2 个文件          7,101 字节

               3 个目录 14,528,782,336 可用字节

更多命令信息请输入mkstore -help查看帮助

2、添加数据库连接认证信息到wallet中

语法:mkstore -wrl <wallet_location> -createCredential <db_connect_string> <username> <password>

D:\app\Oracle>mkstore -wrl . -createCredential 192.168.56.101_scott scott tiger    ---192.168.56.101_scott为tnsnames.ora中的tns名称,scott为用户名,tiger为密码

Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production

版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。

输入 Wallet 口令:                  --输入第1步中创建wallet时提供的wallet密码

Create credential oracle.security.client.connect_string1

注意:这样一个tns名只能对应一个数据库用户,所以我们在名称上加了_scott后缀用于区分;如果用户名或者密码中有特殊字符,请用单引号引起来

如:mkstore -wrl /home/mseibt/pstore -createCredential 192.168.56.101_scott 'scott' tiger

3、修改sqlnet.ora

加入如下参数:

WALLET_LOCATION =

   (SOURCE =

      (METHOD = FILE)

      (METHOD_DATA = (DIRECTORY = D:\app\Oracle))    #第一步中创建wallet时的地址

)

SQLNET.WALLET_OVERRIDE = TRUE

4、测试无密码登录数据库

D:\app\Oracle>sqlplus /@192.168.56.101_scott

SQL*Plus: Release 11.2.0.1.0 Production on 星期二 11月 17 22:25:21 2015

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

连接到:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> show user;

USER 为 "SCOTT"

测试通过。

注:现在使用pl/sql developer也可以不用输入用户名和密码登录了。

二、维护wallet

1、查看wallet中的认证信息

D:\app\Oracle>mkstore -wrl . -listCredential
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。

输入 Wallet 口令:

List credential (index: connect_string username)
1: 192.168.56.101_scott scott


2、修改wallet中的认证信息

D:\app\Oracle>mkstore -wrl . -modifyCredential 192.168.56.101_scott scott newpassword
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。

输入 Wallet 口令:

Modify credential
Modify 1

注意:只能修改用户名和密码,而不能修改db_connect_string,因为这里是把db_connect_string当作key

3、删除wallet中的认证信息

D:\app\Oracle>mkstore -wrl . -deleteCredential 192.168.56.101_scott
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。

输入 Wallet 口令:

Delete credential
Delete 1

4、查看wallet中的条目

D:\app\Oracle>mkstore -wrl . -list
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。

输入 Wallet 口令:

Oracle 密钥存储条目:
oracle.security.client.connect_string1
oracle.security.client.password1
oracle.security.client.username1

注意:因为我们目前只添加了一个连接信息,所以条目名都是xxxx1

5、查看wallet中条目的值

D:\app\Oracle>mkstore -wrl . -viewEntry oracle.security.client.connect_string1
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。

输入 Wallet 口令:

oracle.security.client.connect_string1 = 192.168.56.101_scott



6、修改wallet中条目的值

D:\app\Oracle>mkstore -wrl . -modifyEntry oracle.security.client.connect_string1 192.168.56.101_hr
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。

输入 Wallet 口令:


注意:前面第2步中无法修改连接串的名称,使用本步中的方法就可以修改连接串的名称

三、wallet分发和备份

对于wallect的分发和备份就很简单了,直接从操作系统上拷贝wallect的两个文件即可。

同时问题又来了,如何防止本机的wallect文件被拷贝到其它机器上呢?

从11.2版本开始,wallect新增加了一个auto_login_local 参数,通过使用这个参数,就能解决这个问题。命令如下:

D:\app\Oracle1>orapki wallet create -wallet . -pwd "welcome1" -auto_login_local
Oracle PKI Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。

注意:此时是使用的orakpi命令,而非mkstore命令。wallect创建好之后,维护操作就和上面的相同了。

在linux中,如果在使用的过程中抱ORA-12578: TNS:wallet open failed的错误,请检查/etc/hosts文件

确保按照如下格式配置

<IP> <HOSTNAME> [ <ALIAS> ]

且IP不能是集群环境的虚拟IP

全文完。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle wallet