从现有 PKCS#12 密钥库创建 Oracle Wallet

Posted

技术标签:

【中文标题】从现有 PKCS#12 密钥库创建 Oracle Wallet【英文标题】:Creating Oracle Wallet from existing PKCS#12 keystore 【发布时间】:2014-05-01 16:08:23 【问题描述】:

我有一个 .p12 密钥库文件,由我想通过 Oracle 11g2 数据库中的 PL/SQL 过程与之通信 (SOAP) 的 Web 服务提供商发布。

创建了一个钱包:

$ orapki wallet create –wallet [walletdirectory] -pwd [password] -auto_login

随后生成的“ewallet.p12”文件被替换为(重命名为“ewallet.p12”)密钥库文件。

但是,无法授权 SOAP 请求。服务提供商的日志显示(我无法获得完整的日志):

Error log Apache httpd 
[<timestamp>] [error] [client <IP>] access to <URL> failed, reason: SSL requirement expression not fulfilled (see SSL logfile for more details)

ACL 设置已经过彻底审核。我现在正在探索 Oracle Wallet 没有正确设置的可能性(因为可能无法简单地替换密钥库文件)。我无法从提供的 .p12 中提取私钥以添加到新生成的“ewallet.p12”中。

因此,我想使用 Oracle Wallet Manager 创建钱包。我遇到的一些问题。

我无法在 OWM 中将提供的 .p12 文件作为钱包打开 将提供的密钥库重命名为“ewallet.p12”允许我在 OWM 中打开钱包,但在输入密钥库密码后,显示“密码错误”

精简的问题是:如何从现有的 PKCS#12 文件创建 Oracle 钱包?是作为一个完整的产品还是通过生成所需的 .SSO 文件?关于可能导致此问题的任何其他建议?

注意:使用 SOAPUI,我能够使用提供的密钥库成功地与 Web 服务通信。

【问题讨论】:

【参考方案1】:

无法授权 Web 服务,因为 Oracle Wallet 中的 cwallet.sso 文件不正确。从现有 PKCS#12 密钥库生成正确 Oracle Wallet 的完整过程是:

$ orapki wallet create -wallet /path/to/wallet -auto_login

其中 [path/to/wallet] 以已包含 PKCS#12 密钥库的现有目录为目标。这会生成正确的cwallet.sso 文件。密钥库中包含的证书现在可以显示为:

$ orapki wallet display -wallet /path/to/wallet

现在可以将 Oracle Wallet 与 ACL 关联:

SQLPlus: EXEC DBMS_NETWORK_ACL_ADMIN.ASSIGN_WALLET_ACL('[acl_file.xml]','file:/path/to/wallet');

但是,由于我不知道的原因,以这种方式创建的 Oracle Wallet 无法使用 Oracle Wallet Manager 工具打开。

【讨论】:

以上是关于从现有 PKCS#12 密钥库创建 Oracle Wallet的主要内容,如果未能解决你的问题,请参考以下文章

来自 CA 的 PKCS12 Java 密钥库和 Java 中的用户证书

如何使用 keytool 在 PKCS12 密钥库中创建证书?

ktor sslConnector 从 jar p12 pkcs12 jks 密钥库和 mtls 相互 ssl 连接中服务/读取

Axis over SSL 和使用 PKCS#12 密钥库的 2 向身份验证

如何使用 keytool 列出存储在 PKCS12 密钥库中的证书?

如何使用keytool列出存储在PKCS12密钥库中的证书?