javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException错误

时间:2017-09-04 12:30:05

标签: java ssl recaptcha

我们正在与Google重新合作,并在导入相应的证书(使用java应用程序)后,我们仍然有错误:

_ea.GetEvent<MessageEvent>().Subscribe(GetUsername);

我们正在使用JDK_1.7.51和Tomcat8。

我们列出了证书,并且可以看到证书存在且有效,即使我们仍然有前面提到的例外:

  

别名:google.com创建日期:7-aug-2017条目类型:   trustedCertEntry

     

所有者:CN = www.google.com,O = Google Inc,L = Mountain View,   ST = California,C = US Issuer:C = DE,CN = AXA-DE-Proxy-Issuing-CA17,   OU = IF-NDSG,O = AXA Technology Services Germany GmbH序列号:   d21265bf38c9faf8d615fbbf840aaa1fc6959dc5bbff60a48f77e355fa2eac07bccb6c6d

     

有效期:星期三7月12日星期三14:25:22 CEST 2017直到:星期三10月04日13:57:00   CEST 2017

     

证书指纹:MD5:   52:73:92:40:38:DF:AB:2B:ED:5B:19:10:00:1D:57:7C SHA1:   76:F8:DC:99:CD:07:F8:81:4F:E5:48:C3:F4:4F:71:46:24:CE:F3:54 SHA256:   9B:72:1F:69:85:4C:AD:20:39:16:D4:7A:12:62:0D:8B:03:EC:8B:2F:E8:FD:40:FA:2E: D2:0E:F3:6A:1F:34:59      签名算法名称:SHA256withRSA版本:3

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您的客户端位于防火墙后面并通过代理执行HTTPS请求,该代理为所联系的站点动态生成SSL证书,以便收集正在交换的数据。你可以看到你正在检查的“Google证书”发行人:

Issuer: C=DE, CN=AXA-DE-Proxy-Issuing-CA17, OU=IF-NDSG, O=AXA Technology Services Germany

Java有自己的root-CA-keystore,其中标准证书检查正在查找受信任的根CA,并且那里显然缺少了eavsdropper的根证书。

要摆脱此错误并让java客户端错误地认为证书是由受信任的CA签名,您需要add the CAs root certificate to the root keystore of Java。另一种解决方案是使用您自己的TrustManager建立SSL连接。你可以通过using your own SSLContext where you set trust- and keymanagers yourself来做到这一点。

前者需要在每个Java安装中完成,后者在应用程序中工作。