java绕过证书验证访问https

来源:互联网 发布:外贸海关数据购买 编辑:程序博客网 时间:2024/05/02 10:11

package test;import javax.net.ssl.SSLContext;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import org.apache.http.client.ResponseHandler;import org.apache.http.client.methods.HttpGet;import org.apache.http.conn.ssl.AllowAllHostnameVerifier;import org.apache.http.conn.ssl.SSLConnectionSocketFactory;import org.apache.http.impl.client.BasicResponseHandler;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClientBuilder;public class HttpClientTest {public static void main(String args[]) {try {                        //Secure Protocol implementation.SSLContext ctx = SSLContext.getInstance("SSL");                        //Implementation of a trust manager for X509 certificatesX509TrustManager tm = new X509TrustManager() {public void checkClientTrusted(X509Certificate[] xcs,String string) throws CertificateException {}public void checkServerTrusted(X509Certificate[] xcs,String string) throws CertificateException {}public X509Certificate[] getAcceptedIssuers() {return null;}};ctx.init(null, new TrustManager[] { tm }, null);SSLConnectionSocketFactory ssf = new SSLConnectionSocketFactory(ctx);HttpClientBuilder clientBuilder=HttpClientBuilder.create();clientBuilder.setSSLSocketFactory(ssf);//允许所有的host名称clientBuilder.setHostnameVerifier(new AllowAllHostnameVerifier());CloseableHttpClient client=clientBuilder.build();HttpGet httpget = new HttpGet("https://blu169.mail.live.com/default.aspx") ;ResponseHandler responseHandler = new BasicResponseHandler();String responseBody;responseBody = client.execute(httpget, responseHandler);                                                   System.out.println(responseBody);                        } catch (Exception e) {e.printStackTrace();}}}

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

JAVA中ssl相关的类结构图:


SSLContext类:

 javax.net.ssl.SSLContext是一个实现了安全套接字协议(secure socket protocol)的引擎类。是它是SSLSocketFactory、SSLServerSocketFactory和SSLEngine的工厂。








0 0
原创粉丝点击