我制作了一个带有contactform的Maven Web应用程序,该应用程序运行在Centos服务器上的Glassfish 5上。contactform页面向https://www.google.com/recaptcha/api/siteverify发出请求,并发送一个令牌和一个站点密钥。如果请求来自机器人或人类,您将得到一个回答问题的json对象。
当Java发送该请求时,我收到了一个连接错误:
sun.security.validator.ValidatorException:PKIX路径构建失败:安全性提供者证书路径生成器异常:无法找到到请求的目标的有效证书路径
Java或Glassfish服务器不信任该网站,因为它的密钥库中没有有效的证书,如here所述。
无法使用密钥工具(/opt/jdk1.8.0_181/jre/lib/security/cacerts)将证书导入/opt/jdk1.8.0_181/jre/bin/keytool(存储证书的密钥库)中。
1条答案
按热度按时间dnph8jn41#
在Glassfish域文件夹中(在我的例子中,它位于/home/glassfish/glassfish 5/glassfish/domains/domain 1中)有一个config文件夹,其中有一个名为cacerts.jks和keystore. jks的文件。(https://keystore-explorer.org/)。使用浏览器下载证书,如her所述。您可以将SSL服务器证书下载为. crt。在我的示例中,它是wwwgooglecom。crt,但您也可以选择自己的电子邮件服务器(在我的例子中是leenheeren. nl. cert。使用上面的Keystore工具导入它会更容易。上载文件cacerts.jks和keystore.jks,然后重新启动Glassfish服务器。cacerts.jks和keystore.jks之间的区别如下:cacerts是Java存储(域的)根CA的公共证书的位置。Java使用cacerts来验证服务器。Keystore是Java存储客户机的私钥的位置,以便在服务器请求客户机验证时可以将其共享给服务器。