如何在java中绕过SSL认证URL连接?

时间:2015-01-20 18:20:22

标签: java authentication ssl ssl-certificate httpsurlconnection

我正在创建一个java应用程序,我需要绕过某些URL连接的SSL身份验证,而不是所有URL连接。目前我使用以下代码:

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) {
        }
    }
};
try {
    SSLContext sc = SSLContext.getInstance("SSL");
    sc.init(null, trustAllCerts, new java.security.SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 
} catch (Exception e) {
}

在此代码中,所有URL连接都跳过SSL身份验证,直到应用程序重新启动。

有没有办法让我们可以跳过SSL身份验证只检查一些URL连接,而不是所有的URL连接?

1 个答案:

答案 0 :(得分:1)

不要在课堂上全局使用HttpsURLConnection.setDefaultSSLSocketFactory,而是将URLConnection个实例投射到HttpsURLConnection个实例中并使用setSSLSocketFactory(...)

this answer中所述,如果可以的话,最好不要绕过所有验证,最好为这些连接使用特定的信任库。