当前位置:  开发笔记 > 编程语言 > 正文

如何在java中使用本地HTTPS URL?

如何解决《如何在java中使用本地HTTPSURL?》经验,为你挑选了1个好方法。

使用Java URL类,我可以连接到外部HTTPS服务器(例如我们的生产站点),但是使用本地URL我得到以下异常.

"SunCertPathBuilderException: unable to find valid certification path to requested target".

如何获得有效的认证路径?

编辑:我没有使用此URL直接创建连接,我将URL传递给一个itext PDFReader,然后有一个连接问题.



1> CornPuff..:

这是我的解决方案,它包含了这个主题中的一些想法,并与来自网络的代码一起调整.所有我都调用此函数,它为HttpsURLConnection设置默认的Trust Manager和HostName Verifier.这对某些人来说可能是不受欢迎的,因为它会影响所有HttpsURLConnections,但我只是编写一个简单的代理,因此它对我有用.

private void setTrustAllCerts() throws Exception
{
    TrustManager[] trustAllCerts = new TrustManager[]{
        new X509TrustManager() {
            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return null;
            }
            public void checkClientTrusted( java.security.cert.X509Certificate[] certs, String authType ) { }
            public void checkServerTrusted( java.security.cert.X509Certificate[] certs, String authType ) { }
        }
    };

    // Install the all-trusting trust manager
    try {
        SSLContext sc = SSLContext.getInstance( "SSL" );
        sc.init( null, trustAllCerts, new java.security.SecureRandom() );
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        HttpsURLConnection.setDefaultHostnameVerifier( 
            new HostnameVerifier() {
                public boolean verify(String urlHostName, SSLSession session) {
                    return true;
                }
            });
    }
    catch ( Exception e ) {
        //We can not recover from this exception.
        e.printStackTrace();
    }
}

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有