如何使用oracle钱包

时间:2014-06-11 10:19:35

标签: oracle

我正在尝试将密码存储在Oracle Wallet文件中,我将从代码中检索并使用。

我尝试创建钱包并在那里保存凭证: -

$ mkstore -wrl <wallet_location> -createCredential sid scott tiger

Oracle Secret Store Tool : Version 12.1.0.2
Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.

Enter wallet password:   
Create credential oracle.security.client.connect_string1

创建不会出现任何错误,但是当我尝试列出凭据时,我什么都没得到。

$ mkstore -wrl -listCredential

Oracle Secret Store Tool : Version 12.1.0.2
Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved

另外,如何使用java检索此密码?

2 个答案:

答案 0 :(得分:2)

使用wallet连接Oracle DB需要进行以下更改。

  1. 您需要创建钱包商店,您还需要为钱包选择密码,并且在修改钱包时需要使用此密码

    • OracleClientHome / bin / mkstore -wrl 您要存储钱包的位置 -create

    例如 C:\ Oracle_11.2.0 \ product \ client_1 \ bin \ mkstore -wrl C:\ Users \ sample \ app \ wallet

  2. 您需要在tnsnames.ora中添加tns条目( OracleClientHome /network/admin/tnsnames.ora),同样的tns条目名称将用于我们的钱包连接字符串

    • TNS_Entry_Name =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = <强>主机名)(PORT = <强> PORT_NUMBER ))(CONNECT_DATA =(SERVER =专用)(SERVICE_NAME = <强> SERVICE_NAME )))

    例如 C:\ Oracle_11.2.0 \ product \ client_1 \ network \ admin \ tnsnames.ora

    • SAMPLEDB_RO =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = <强>主机名)(PORT = <强> PORTNUMBER ))(CONNECT_DATA =(SERVER =专用)( SERVICE_NAME = samplesrv)))
  3. 您需要使用凭据为上述tns条目创建钱包条目,您还需要提供您在创建钱包时提供的钱包密码。

    • OracleClientHome / bin / mkstore -wrl 您要存储钱包的位置 -createCredential TNS_Entry_Name / Wallet_Entry_name DB_Username DB_Password

    例如 C:\ Oracle_11.2.0 \ product \ client_1 \ bin \ mkstore -wrl C:\ Users \ sample \ app \ wallet -createCredential SAMPLEDB_RO示例样本

  4. 您需要添加sqlnet.ora文件以将钱包位置和钱包覆盖标志更新为true

    • WALLET_LOCATION =(SOURCE =(METHOD = FILE)(METHOD_DATA =(DIRECTORY = 您要存放钱包的位置)))
    • SQLNET.WALLET_OVERRIDE = TRUE

    <强> e.g。

    • WALLET_LOCATION =(SOURCE =(METHOD = FILE)(METHOD_DATA =(DIRECTORY = C:\ Users \ sample \ app \ wallet)))
    • SQLNET.WALLET_OVERRIDE = TRUE
  5. 使用wallet和oracle客户端测试数据库连接,以确保钱包配置正确

    • OracleClientHome / bin / sqlplus / nolog

    • 连接 DB_Username / DB_Password @ TNS_Entry_Name

    • connect / @ TNS_Entry_Name

    <强> e.g。

    • 连接样本/样本@ SAMPLEDB_RO
    • connect / @ SAMPLEDB_RO
  6. 你需要让java应用程序准备好使用钱包并运行带有以下JVM参数的java程序

    • 将以下jar添加到应用程序类路径。
    • OracleClientHome /jdbc/lib/ojdbc.jar
    • OracleClientHome /jlib/oraclepki.jar
    • OracleClientHome /jlib/osdt_cert.jar
    • <强> OracleClientHome /jlib/osdt_core.jar

    • <强> e.g。

    • C:\ Oracle_11.2.0 \产品\的Client_1 \ JDBC \ lib中\ ojdbc.jar
    • C:\ Oracle_11.2.0 \产品\的Client_1 \ jlib \ oraclepki.jar
    • C:\ Oracle_11.2.0 \产品\的Client_1 \ jlib \ osdt_cert.jar
    • C:\ Oracle_11.2.0 \产品\的Client_1 \ jlib \ osdt_core.jar

    • 更改应用程序配置瘦URL以使用钱包

    • JDBC:预言:瘦:/ @的 TNS_Entry_Name / Wallet_Entry_name

    • <强> e.g。

    • JDBC:预言:瘦:/ @ SAMPLEDB_RO

    • 还添加以下属性作为JVM参数,这有助于库找到oracle钱包

    • -Doracle.net.tns_admin = OracleClientHome / network / admin -Doracle.net.wallet_location = 您要存储钱包的位置

    • 例如 -Doracle.net.tns_admin = C:\ Oracle_11.2.0 \ product \ client_1 \ network \ admin -Doracle.net.wallet_location = C:\ Users \ sample \ app \钱包

    你们都准备好了!

    • 要列出钱包中的现有凭据,您可以使用以下命令,但您需要提供在创建钱包时提供的钱包密码。
    • OracleClientHome / bin / mkstore -wrl 您要存储钱包的位置 -listCredential

    • 例如 C:\ Oracle_11.2.0 \ product \ client_1 \ bin \ mkstore -wrl C:\ Users \ sample \ app \ wallet -listCredential

答案 1 :(得分:0)

必须记住的一件事是,为createCredential命令选择的别名必须与用于连接的URL 相同

当您的JDBC连接字符串看起来像jdbc:oracle:thin:/@dbsrv:1521/orcl时,您必须使用命令

mkstore -wlr /foobar -createCredential dbsrv:1521/orcl USER PASSWORD