我正在创建一个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连接?
答案 0 :(得分:1)
不要在课堂上全局使用HttpsURLConnection.setDefaultSSLSocketFactory
,而是将URLConnection
个实例投射到HttpsURLConnection
个实例中并使用setSSLSocketFactory(...)
。
如this answer中所述,如果可以的话,最好不要绕过所有验证,最好为这些连接使用特定的信任库。