我有一个在WebSphere中运行的Java Web应用程序,需要致电第三方服务(IBM(以获取一些响应。
首先,IBM给我一个p12
文件,该文件包含客户端证书,然后在Firefox RestClient
中对其进行测试,CALL Success,我在RestClient
中获得了响应代码200。否则,我将被禁止403。因此,这证明了第三方提供的p12
是正确的。如果我的陈述错了,请纠正我。
因此,我很乐意将此p12
文件导入到我的CellDefaultKeystore中,以测试应用程序上的连接。不幸的是,在我导入该p12文件后,节点状态变为"未知",我什至无法"同步"它们。当我检查服务器日志时,我一直看到
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
之后,我将其从CellDefaultKeyStore
中删除,尝试将其导入NodeDefaultKeyStore
,节点问题消失,节点可以同步,我的应用程序可以成功地致电第三方。我认为这是今天我的工作完成的,但是,该解决方案不稳定,它唯一起作用,并非每次。片刻后,节点状态仍然会变成"未知",或者,如果我运行./stopManager.sh
和./startManager.sh
,节点问题将立即返回。
我尝试过运行./stopNode.sh
和./startNode.sh
,在此2 Shell脚本的日志中没有错误。但是is Console UI仍然显示状态是unknown
,我什至无法停止启动我的服务器是控制台。
首先,我认为它可能是显示问题,但是如果我从NodeDefaultKeyStore
删除p12
文件,此问题将解决。
我尝试使用Google,但最终仍然找不到任何线索。我不确定是我的配置还是有问题的p12
文件。
我应该参考哪个日志查看为什么节点状态将成为 unknown
,否则我还能继续对此进行调试/故障排除?
您收到了外部服务的证书,并且您希望WebSphere中的代码可以连接到该服务吗?默认的单元格商店不是放置外部连接证书的地方。
将其放在受信任的密钥库中。这将告诉WebSphere相信外部连接证书,使您的代码可以连接到它。
您可以通过控制台或直接在文件上使用iKeyman进行操作。
话虽如此,请不要与默认密钥库中的默认证书混乱。@dbreaux在评论中是正确的。