javax.net.ssl.ssl握手异常:sun.security.validator.ValidatorExcept



我必须在我的开发(Spring应用程序)中包含google repatcha。我有谷歌密钥和验证密钥,一切都很好。

现在,我将重述验证部分转移到另一个基于rest服务的应用程序上,这样我就可以使用rest服务来利用/更改任何密钥或url等等。设置是,我在服务器1中部署了rest服务应用程序(部署在weblogic中,但添加了JAVA_OPTS参数以使用sun库),并在服务器2上使用我的应用程序tomcat。因此,当我部署这个并访问时,我在验证响应时会收到错误

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我已经在server1和server2密钥库之间同步了所有密钥,但我仍然看到了错误。

我的错误代码如下:

public static final String url = "https://www.google.com/recaptcha/api/siteverify";
    public static final String secret = "";
    private final static String USER_AGENT = "";
    public static boolean verify(String gRecaptchaResponse) throws IOException {
        if (gRecaptchaResponse == null || "".equals(gRecaptchaResponse)) {
            return false;
        }
        try{
        URL obj = new URL(url);
        HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
        con.setRequestMethod("POST");
        String postParams = "secret=" + secret + "&response="
                + gRecaptchaResponse;
        con.setDoOutput(true);
        DataOutputStream wr = new DataOutputStream(con.getOutputStream()); --------------------------->**This is where the I get the exception**
        wr.writeBytes(postParams);

我是不是遗漏了什么?谢谢

注意:我可以访问https://www.google.com/recaptcha/api/siteverify通过浏览器获取URL。

我能够解决这个问题。网站http://magicmonster.com/kb/prg/java/ssl/pkix_path_building_failed.html帮助了我。

我不得不在我的weblogic密钥库中添加谷歌证书。默认情况下,它在cacerts中存在,但在DemoTrust.jks 中没有

再次感谢赫拉博什。

您确定有正确的证书路径吗?当你移动你的摘要时,它应该建立在另一个具有不同证书路径的服务器(server1?)上。这个错误就是关于这个的。在JAVA_OPT中检查(或添加)您的证书路径以在server1上进行构建。这个错误只是因为它在定义的路径中找不到证书。检查路径或权限。或者你可以通过HARD:)设置证书路径来运行你的应用程序服务器:

-Djavax.net.ssl.keyStore=path/to/keystore.jks

或者在Java 中

System.setProperty("javax.net.ssl.trustStore",path_to_your_cacerts_file);

相关内容

最新更新