【问题标题】:SSLHandshakeException for Google RecaptchaGoogle Recaptcha 的 SSLHandshakeException
【发布时间】:2021-03-25 21:50:24
【问题描述】:

我正在使用在 JBoss7.0.2.Final 服务器上运行的 Java 1.7 应用程序。

我创建了一个 REST 端点来处理用户登录。这工作正常,但是当我调用 Google 的 recaptcha (v2) url (https://www.google.com/recaptcha/api/siteverify) 时,我收到以下错误:

javax.net.ssl.SSLHandshakeException:收到致命警报: 握手失败

昨天运行没有错误,我们的服务器也没有任何变化,所以我怀疑谷歌端可能发生了一些变化。

问题

有谁知道我今天为什么开始出现此错误,以及如何解决?

更多信息:

我尝试使用以下参数构建我们的应用程序(mvn clean install),但没有任何区别。

-Dhttps.protocols=TLSv1.2,TLSv1.1,TLSv1

更多信息:

如果我直接使用 Postman 调用 Google 的验证端点,我不会收到握手错误:

POST https://www.google.com/recaptcha/api/siteverify?secret=seceret-key&response=rechapta

此外,如果我从我们拥有的另一个 JBoss 服务器(本地主机和另一个环境)调用它,它不会收到握手错误。

所以我们的服务器上一定有一些不正确的地方。

【问题讨论】:

    标签: java ssl recaptcha handshake


    【解决方案1】:

    我将 Google 的证书 (*.google.com.cer) 添加到服务器 cacerts(在服务器 jre 上,例如 /home/jboss/java-1.7.0-openjdk-1.7.0.161-2.6.12.0.el7_4.x86_64/jre/lib/security/cacerts)。重启 jboss 服务器。

    Owner: CN=*.google.com, O=Google LLC, L=Mountain View, ST=California, C=US
    Issuer: CN=GTS CA 1O1, O=Google Trust Services, C=US
    Serial number: 6e4318b8d790165c0300000000badb8a
    Valid from: Tue Nov 10 16:34:43 SAST 2020 until: Tue Feb 02 16:34:42 SAST 2021
    

    证书可以从这个网址复制:https://www.google.com/recaptcha/api/siteverify。

    (见https://magicmonster.com/kb/prg/java/ssl/pkix_path_building_failed/)

    【讨论】:

    • scp *.google.com.cer jboss@dev.nexct.co:/home/jboss/java-1.7.0-openjdk-1.7.0.161-2.6.12.0.el7_4.x86_64/jre/lib/security/
    • sudo keytool -importcert -file ./*.google.com.cer -alias demo -keystore ./cacerts
    【解决方案2】:

    Google 有多个根 CA。您需要检查当前 CA 的 Google PKI 存储库并将它们全部添加到密钥库中,以确保 SSL 握手始终成功运行。 您可以在此处访问 PKI 存储库https://pki.goog/repository/

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 2019-05-11
      相关资源
      最近更新 更多