Java URLConnection下载文件忽略https证书验证
【代码】Java URLConnection下载文件忽略https证书验证。
·
public class HttpUtils {
/*
* HTTPS忽略证书验证,防止因证书算法不符合约束条件,使用继承X509ExtendedTrustManager的方式
*/
public static class VulX509TrustManager extends X509ExtendedTrustManager {
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1, Socket arg2) throws CertificateException {
}
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1, SSLEngine arg2)
throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1, Socket arg2) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1, SSLEngine arg2)
throws CertificateException {
}
}
private static SSLContext X509TrustManagerIgnoreCertificate() {
TrustManager[] tm = { new VulX509TrustManager() };
SSLContext ctx = null;
try {
ctx = SSLContext.getInstance("TLS");
ctx.init(null, tm, null);
} catch (Exception e) {
e.printStackTrace();
}
return ctx;
}
private static final class SslContextInstanceHolder {
static final SSLContext sslContextInstance = X509TrustManagerIgnoreCertificate();
}
public static SSLContext getSslContextIgnoreCertInstance() {
return SslContextInstanceHolder.sslContextInstance;
}
url = new URL(url);//eg:url=https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.jar
File file = new File(filePath);//下载的目标位置eg filePath=E:\plexus-utils-3.0.15.jar
InetSocketAddress addr = new InetSocketAddress("xxx.xx", 端口号); // proxy
proxy proxy = new Proxy(Proxy.Type.HTTP, addr);
HttpsURLConnection urlOnnection = (HttpsURLConnection) url.openConnection(proxy);
SSLContext sslContextIgnoreCertInstance = HttpUtils.getSslContextIgnoreCertInstance();
urlOnnection.setSSLSocketFactory(sslContextIgnoreCertInstance.getSocketFactory());
urlOnnection.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
});
InputStream inputStream = urlOnnection.getInputStream();
FileUtils.copyInputStreamToFile(inputStream, file);
//至此,下载成功,位置在filePath
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)