【发布时间】:2019-09-19 04:54:12
【问题描述】:
我有一个在 WebSphere 中运行的 Java Web 应用程序,它需要调用第三方服务 (IBM) 以获得一些响应。
起初 IBM 给我一个 p12 文件,其中包含客户端证书,我在 Firefox RestClient 中测试它,调用成功,我在 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脚本的日志中没有错误。但是那里的 WAS 控制台 UI 仍然显示状态是unknown,我什至无法停止通过 WAS 控制台启动我的服务器。
起初我认为它可能是显示问题,但如果我从我的NodeDefaultKeyStore 中删除p12 文件,这个问题就会解决。
我尝试了谷歌,但最终仍然找不到任何线索。我不确定是我的配置还是p12 文件有问题。
我应该参考哪个日志看看为什么节点状态会变成unknown,或者我还能继续调试/解决什么问题?
【问题讨论】:
-
目前我并没有完全关注你所做的一切。再一次,我真的需要查看配置和跟踪以了解您所做的事情。您上面的堆栈是部分的。系统输出日志应提供有关需要将什么证书添加到什么信任库的详细消息。是在日志中吗?
-
当您安装到任何内置密钥库时,如果将其设置为 default 证书,则会导致节点同步问题。相反,您给它一个不同的别名,然后需要像在动态出站端点 SSL 配置中一样指定该别名
标签: java websphere keystore client-certificates p12