响应在Java中通过HTTPS失败

时间:2012-10-25 16:41:51

标签: java ssl https

我们在网站上运行抓取工具以使我们的信息保持最新。像one这样的网站允许使用浏览器进行标准导航,但是在使用标准Java库时它们不会发送响应。这是我用来访问主页(索引)页面的代码,

    try
    {
        URL my_url = new URL("https://www.capitallightingfixture.com");

        URLConnection u = my_url.openConnection();

        if ( u instanceof HttpURLConnection )
        {
            HttpURLConnection http_u = (HttpURLConnection)u;

            System.out.println(http_u.getResponseCode());
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

运行时,该程序将抛出以下错误

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

根据我对错误的理解,当Java无法验证服务器提供的证书时,它们会被抛出。但是,正如我上面提到的,谷歌浏览器导航到页面没有问题,它甚至可以验证证书(不会引发安全错误)。

有没有办法可以覆盖Java并允许它接收响应?

1 个答案:

答案 0 :(得分:1)

我认为您尝试访问的IP是使用自签名证书。请尝试以下两个链接。

How can I use different certificates on specific connections?

Using Self Signed certificate in java