我正在通过SSL使用来自远程服务器的Web服务。
远程服务器有一个Tomcat FE。我们让Verisign签署了远程服务器证书,证书链是:
o:remote.server.com i:VeriSign Class 3 Secure Server CA - G3 i:VeriSign Class 3 Public Primary Certification Authority - G5
我们将此证书添加到Tomcat的密钥库中,并添加了Verisign的中间证书,其中包含:
o:VeriSign Class 3 Public Primary Certification Authority - G5 i:Class 3 Public Primary Certification Authority
当我从服务器调用web服务时,我得到一个SSL握手异常:
找不到可信证书
在我服务器的JVM cacerts上,我有“Class 3 Public Primary Certification Authority”,但没有“VeriSign Class 3 Public Primary Certification Authority - G5证书。”
如果我将“VeriSign Class 3 Public Primary Certification Authority - G5”证书添加到jvm,那么我就会停止获取异常。但是我的理解是Tomcat应该链接证书,以便当我的服务器获得远程证书时,它将看到“Class 3 Public Primary Certification Authority”作为根权限。
为什么不发生这种情况?
答案 0 :(得分:1)
我终于解决了这个问题 我们的服务器密钥库似乎安装了多个冗余证书。一旦我们删除了冗余证书并且只剩下服务器证书和ca-chain证书,客户端就会收到完整的链并且停止获取SSL握手异常。
Verisign提供了一个帮助我解决此问题的工具 https://ssl-tools.verisign.com/#certChecker