为什么java客户端不信任根证书,即使它已经在cacerts密钥库中

时间:2013-04-10 14:35:02

标签: java ssl certificate keystore

我在java项目中调用Web服务时遇到问题。 Web服务客户端在WebSphere 7中部署的Java ee应用程序中运行.SSL证书链具有Go Daddy Class 2 Certificate Authority的根证书。我确实在WebsPhere JVM文件夹下的cacerts文件中看到了它,但我不断收到不受信任的证书错误:

java.security.cert.CertPathValidatorException: The certificate issued by OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US is not trusted; internal cause is: 
java.security.cert.CertPathValidatorException: Certificate chaining error

无法弄清楚为什么会出现此错误,以及如何解决此问题。请帮帮我。

  1. Web服务在服务器A中运行,当我在我的机器上运行时,客户端运行良好,我机器上的cacerts包含该根证书。
  2. 当客户端使用Web应用程序部署到服务器A上时,它不起作用。我们检查了cacerts文件,它确实包含了go daddy root certificate。
  3. 当客户端和Web服务部署到运行VeriSign证书链的其他一些环境时,它也能正常工作。
  4. 由于

2 个答案:

答案 0 :(得分:0)

  

链接错误

您还没有正确导入链,或者它有问题。我使用GoDaddy证书而且我没有收到链接错误,因此更有可能是前者。

答案 1 :(得分:0)

在我看来,CA根公钥应该添加到您的信任存储区,因为您将服务器用作Web服务客户端而不是Web服务服务器。

在管理控制台上,您应该:

Security->SSL certificate and key management->Key stores and certificates-> NodeDefaultTrustStore-> Signer certificates