p12 在 NodeDefaultKeyStore 中工作,但在 WebSphere 的 CellDefaultKeyStore 中不起作用

Posted

技术标签:

【中文标题】p12 在 NodeDefaultKeyStore 中工作,但在 WebSphere 的 CellDefaultKeyStore 中不起作用【英文标题】:p12 work in NodeDefaultKeyStore but not work in CellDefaultKeyStore in WebSphere 【发布时间】:2019-04-29 09:42:32 【问题描述】:

早安,

我的 Web 应用程序需要连接到 IBM 第三方以获得一些响应。因此,IBM 给了我一个包含客户端证书的.p12 文件。

首先我将这个.p12 文件导入到我现有的CellDefaultKeyStore 中,它会遇到证书链错误。

com.ibm.jsse2.util.j: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is:
    java.security.cert.CertPathValidatorException: The certificate issued by xxx is not trusted; internal cause is: 
    java.security.cert.CertPathValidatorException: Certificate chaining error

然后我将这个.p12 文件导入NodeDefaultKeyStore,令人惊讶的是它的工作。我的应用程序能够调用第三方并获得响应码 200。

我不明白如何向我的客户解释这一点。

据我了解,CellDefaultKeyStore 的管理范围更大,因为它在单元格中,NodeDefaultKeyStore 应该只考虑单元格的一部分,假设 CellDefaultKeyStore 应该可以工作。

有人可以就此提出建议吗?

【问题讨论】:

我不明白为什么添加为什么将证书添加到节点 keystone 工作。您得到的错误是信任,这表明需要将证书添加到 CellDefaultTrustStore。在 ND 环境中,所有节点都使用 CellDefaultTrustStore。 客户端证书识别,并进入您的密钥库。您看到的此错误通常是您尚未信任 服务器的 完整服务器证书链。这是您在 TrustStore 中解决的问题。两个不同的商店用于两种不同的目的。单元范围的存储(信任或密钥)应该与节点范围的存储一样工作 @Alaine,这是我的问题,在 ND 环境中,所有节点都使用 CellDefaultTrustStore,但不明白为什么在其上添加证书不起作用,但添加到 NodeDefaultKeyStore 将起作用。 我无法解释为什么将证书添加到节点密钥库会突然在您的场景中建立信任。密钥库正常,不会在 TrustManagers 中设置。这就需要了解配置细节并可能进行跟踪。我建议打开一个案例来深入研究这个问题。 嗨@Alaine,我刚刚发现我的解决方案不稳定,仍然会导致节点状态变为unknown。我又发了一个问题,能帮忙看看吗? ***.com/questions/55922440/… 【参考方案1】:

简单解释几个概念:

CellDefaultTrustStore - 存储signer 证书,用于您连接到的服务器,以使其受信任。默认情况下由所有节点和服务器共享 NodeDefaultKeyStore - 存储private 证书,因此用于客户端身份验证的证书。默认情况下,每个节点都有自己的存储和私有证书进行身份验证。 CellDefaultKeyStore - 存储与单元关联的private 证书。由部署管理器使用,而不是为应用程序服务的节点。它不被联合节点使用。 NodeDefaultSSLSettings - 这管理给定节点的 SSL 配置,您可以检查它。默认情况下它使用 NodeDefaultKeyStore(不是 CellDefaultKeyStore)和 CellDefaultTrustStore

但回到你的问题。 如果您需要使用客户端证书身份验证连接到某些服务,您应该做的是:

使用 p12 文件中的证书创建新的密钥库 使用连接到该服务所需的所有签名者证书创建新的信任库 创建指向这些商店的新 SSL 配置 创建动态出站端点 SSL 配置设置,指向您的 ssl 配置,选择正确的客户端证书,并以协议、主机、端口形式指定连接信息

当您进行与您输入的信息相匹配的出站 ssl 连接时,将选择此配置。

【讨论】:

嗨@Gas,如果我只做一件刚刚放入 NodeDefaultKeyStore 的事情,可能吗?因为目前我发现它只能在Node1中工作,而不能在Node2中工作,但是我将它放入Node2时没有任何错误。只是我在 Node2 中的 app2 仍然禁止 403。我试图寻找根本原因,但仍然无法得到它。 @PanadolChong 你可以试试。请记住,每个节点都有自己的 NodeDefaultKeyStore,所以它可能不起作用,因为您没有将它添加到第二个节点的 NodeDefaultKeyStore。

以上是关于p12 在 NodeDefaultKeyStore 中工作,但在 WebSphere 的 CellDefaultKeyStore 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥在导入 p12 文件时出现错误?

Apple导出p12证书 导出证书为p12 Apple开发

苹果证书导出p12文件

在 JMeter 中永久使用 p12 文件

mac无法导出p12证书问题

如何使用 openssl 创建 P12 文件