【问题标题】:Oracle SSL authentication wallet no longer workingOracle SSL 身份验证钱包不再工作
【发布时间】:2021-04-26 20:38:49
【问题描述】:

我正在运行测试以使用 SSL Oracle 钱包连接到本地安装的 Oracle 数据库。

大约两周前,我能够创建钱包并成功使用它们进行身份验证。但这似乎不再起作用。以下是我创建钱包的方法。

创建服务器钱包并导出证书:

orapki wallet create -wallet "C:/app/TestWallet/Server" -pwd Welcome1 -auto_login

orapki wallet add -wallet "C:/app/TestWallet/Server" -pwd Welcome1 -dn "CN=MyHostName.Domain.com" -keysize 1024 -self_signed -validity 3650 -sign_alg sha256

orapki wallet export -wallet "C:/app/TestWallet/Server" -pwd Welcome1 -dn "CN=MyHostName.Domain.com" -cert C:/app/TestWallet/MyHostName-certificate.crt

创建客户端钱包并导出证书:

orapki wallet create -wallet "C:/app/TestWallet/Client" -pwd Welcome1 -auto_login

orapki wallet add -wallet "C:/app/TestWallet/Client" -pwd Welcome1 -dn "CN=DBUserName" -keysize 1024 -self_signed -validity 3650 -sign_alg sha256

orapki wallet export -wallet "C:/app/TestWallet/Client" -pwd Welcome1 -dn "CN=DBUserName" -cert C:/app/TestWallet/DBUserName-certificate.crt

交换证书:

orapki wallet add -wallet "C:/app/TestWallet/Client" -pwd Welcome1 -trusted_cert -cert C:/app/TestWallet/MyHostName-certificate.crt

orapki wallet add -wallet "C:/app/TestWallet/Server" -pwd Welcome1 -trusted_cert -cert C:/app/TestWallet/DBUserName-certificate.crt

钱包展示(服务器):

orapki wallet display -wallet "C:/app/TestWallet/Server" -pwd Welcome1

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

Requested Certificates:
User Certificates:
Subject:        CN=MyHostName.Domain.com
Trusted Certificates:
Subject:        CN=DBUserName
Subject:        CN=MyHostName.Domain.com

钱包展示(客户端):

orapki wallet display -wallet "C:/app/TestWallet/Client" -pwd Welcome1

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

Requested Certificates:
User Certificates:
Subject:        CN=DBUserName
Trusted Certificates:
Subject:        CN=DBUserName
Subject:        CN=MyHostName.Domain.com

服务器 sqlnet.ora

SSL_CLIENT_AUTHENTICATION = TRUE

WALLET_LOCATION =
  (SOURCE =
    (METHOD = FILE)
    (METHOD_DATA =
      (DIRECTORY = C:\app\TestWallet\Server)
    )
  )

客户端 sqlnet.ora

SSL_CLIENT_AUTHENTICATION = TRUE

WALLET_LOCATION =
  (SOURCE =
    (METHOD = FILE)
    (METHOD_DATA =
      (DIRECTORY = C:\app\TestWallet\Client)
    )
  )

我正在使用 OCCI Instant Client 进行测试。

Environment *env = Environment::createEnvironment();
Connection *conn = env->createConnection(m_username.c_str(), m_password.c_str(), m_dbConnectionString.c_str());
// Note: username and password is not supplied to above function.

以上代码抛出异常如下:

ORA-29024: Certificate validation failure

两周前我能够创建钱包并正常连接,但这似乎不再有效。 如果我将sqlnet.ora中的钱包路径设置为使用2周前的旧钱包,我可以正常连接。

我确定钱包路径是正确的。 LSNRCTL 也确认了钱包路径是对的:

LSNRCTL> status

 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=MyHostName.Domain.com)(PORT=5500))(Security=(my_wallet_directory=C:\app\TestWallet\Server))

我可能错过了什么?如何让钱包 SSL 认证生效?

编辑: 如果在sqlnet.ora 文件中,我将钱包更改为使用两周前创建的旧钱包的路径。它仍在工作。仅新创建的钱包会出现此问题。

【问题讨论】:

  • 自从更换服务器钱包后,你有没有重启过服务器?
  • @pmdba 是的。我已经重新启动了 Oracle 服务。即使重新启动也无济于事

标签: c++ oracle occi


【解决方案1】:

好的,看来我只是错过了服务器 listener.ora 中的另一个设置 这次我在与之前测试不同的位置创建钱包。

WALLET_LOCATION =
  (SOURCE =
    (METHOD = FILE)
    (METHOD_DATA =
      (DIRECTORY = C:\app\TestWallet\Server)
    )
  )

更改如下:

LSNRCTL> stop
LSNRCTL> start

请稍等片刻更新。现在启动并运行它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 2013-08-04
    • 2012-07-27
    • 2012-11-08
    相关资源
    最近更新 更多