首页 > 解决方案 > 无法在 java maven 应用程序中找到请求的目标 google recaptcha 的有效认证路径

问题描述

我用 Google reCaptcha v3 制作了一个 Maven 网络应用程序,它在 Centos 服务器上的 Glassfish 5 上运行。联系表单页面向https://www.google.com/recaptcha/api/siteverify发出请求并发送令牌和站点密钥。如果请求来自机器人或人类,您将获得一个回答问题的 json 对象。

当 Java 发送该请求时,出现连接错误:

sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

Java 或 Glassfish 服务器不信任该网站,因为它的密钥库中没有有效证书,如此处所述所述。

使用 /opt/jdk1.8.0_181/jre/lib/security/cacerts(存储证书的密钥库)中的 keytool (/opt/jdk1.8.0_181/jre/bin/keytool) 导入证书不起作用。

标签: javacentoskeytoolglassfish-5

解决方案


在 Glassfish 域文件夹中(在我的例子中,它位于 /home/glassfish/glassfish5/glassfish/domains/domain1 中)有一个配置文件夹,其中包含一个名为 cacerts.jks 的文件。您可以使用 keytool 进行编辑,但也可以使用 Keytool Explorer ( https://keystore-explorer.org/ ) 进行编辑。按照她的解释,用浏览器下载证书。您可以将 SSL 服务器证书下载为 .crt。就我而言,它是 wwwgooglecom.crt。使用上面的 Keystore 工具可以轻松导入它。上传文件 cacerts.jks 并重新启动 Glassfish 服务器。


推荐阅读