java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java HttpsURLConnection访问https协议如何跳过SSL证书的验证

Java用HttpsURLConnection访问https协议如何跳过SSL证书的验证问题

作者:荔枝味的真知棒

这段文章主要讲解了在请求httpss;协议时的SSL验证过程,特别是在企业内部信任的请求情况下,可以通过跳过SSL验证来简化编程过程,文章中提供了一段简单代码示例,可以直接放入请求类中实现自动跳过SSL验证

用HttpsURLConnection访问https协议跳过SSL证书的验证

请求https协议的时候,是需要进行SSL验证的。

当然,如果这个请求是自己企业已知的或者是被企业已信任的,这个时候,咱们就会为了编程的方便,不需要把请求的根证书以及中间证书导入到JKS中了,让程序在调用HTTP协议的时候对服务器的服务器名和证书名进行对比。

说了那么多,应该怎么做呢?

很简单

直接将下面代码段放入到请求类中,即可自动跳过SSL验证。

static {
        try {
            trustAllHttpsCertificates();
            HttpsURLConnection.setDefaultHostnameVerifier
                    (
                            (urlHostName, session) -> true
                    );
        } catch (Exception e) {
        }
    }

    private static void trustAllHttpsCertificates()
            throws NoSuchAlgorithmException, KeyManagementException {
        TrustManager[] trustAllCerts = new TrustManager[1];
        trustAllCerts[0] = new TrustAllManager();
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, null);
        HttpsURLConnection.setDefaultSSLSocketFactory(
                sc.getSocketFactory());
    }

    private static class TrustAllManager
            implements X509TrustManager {
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }

        public void checkServerTrusted(X509Certificate[] certs,
                                       String authType) {
        }

        public void checkClientTrusted(X509Certificate[] certs,
                                       String authType) {
        }
    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文