古詩詞大全網 - 藝術簽名 - java HttpsURLConnection怎麽繞過證書,原理是什麽

java HttpsURLConnection怎麽繞過證書,原理是什麽

import?java.security.cert.X509Certificate;

import?javax.net.ssl.HostnameVerifier;

import?javax.net.ssl.HttpsURLConnection;

import?javax.net.ssl.SSLContext;

import?javax.net.ssl.SSLSession;

import?javax.net.ssl.X509TrustManager;

public?class?MyHttpsConnection?{

private?myX509TrustManager?xtm?=?new?myX509TrustManager();

private?myHostnameVerifier?hnv?=?new?myHostnameVerifier();

public?MyHttpsConnection()?{

SSLContext?sslContext?=?null;

try?{

sslContext?=?SSLContext.getInstance("TLS");

X509TrustManager[]?xtmArray?=?new?X509TrustManager[]?{?xtm?};

sslContext.init(null,?xtmArray,?new?java.security.SecureRandom());

}?catch?(Exception?gse)?{

gse.printStackTrace();

}

if?(sslContext?!=?null)?{

HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());

}

HttpsURLConnection.setDefaultHostnameVerifier(hnv);

}

}

class?myX509TrustManager?implements?X509TrustManager?{

public?myX509TrustManager()?{

}

public?void?checkClientTrusted(X509Certificate[]?chain,?String?authType)?{

}

public?void?checkServerTrusted(X509Certificate[]?chain,?String?authType)?{

}

public?X509Certificate[]?getAcceptedIssuers()?{

return?null;

}

}

class?myHostnameVerifier?implements?HostnameVerifier?{

public?myHostnameVerifier()?{

}

public?boolean?verify(String?hostname,?SSLSession?session)?{

return?true;

}

}

調用時類似

new MyHttpsConnection();

URLConnection urlCon = (new URL(url)).openConnection();

urlCon.setConnectTimeout(5000);