码迷,mamicode.com
首页 > 编程语言 > 详细

java SSL 简单操作demo

时间:2016-01-21 12:10:54      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:java ssl

当下的web应用好多都转到了https,有时候需要利用java发送https请求,但是呢服务器有证书,又没有好的办法得到服务器证书,一般会自定义jsse里的信任管理器,让客户端不验证服务器的证书的有效性,此方法一般就叫绕过证书之类的,下面给一个参考demo:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
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.TrustManager;
import javax.net.ssl.X509TrustManager;

/**  
 * @Title: SSLDemo1.java
 * @Package 
 * @Description: TODO(用一句话描述该文件做什么)
 * @author huhu  
 * @date 2016年1月21日 上午10:08:45
 * @version V1.0  
 */
public class SSLDemo1 {

	
	public static void main(String[] args) throws Exception {
		
		
		trustAllHttpsCertificates();
		
		HostnameVerifier hv = new HostnameVerifier() {
			@Override
			public boolean verify(String hostname, SSLSession session) {
				 System.out.println("Warning: URL Host: " + hostname + " vs. " + session.getPeerHost());  
				 return true;  
			}
		};
		HttpsURLConnection.setDefaultHostnameVerifier(hv);
		
		// 在建立Https连接之前做如上处理后,后续就跟普通http处理一样
		
		
		
		
		URL url = new URL("https://dynamic.12306.cn/otsweb/main.jsp");
		HttpsURLConnection conn  = (HttpsURLConnection) url.openConnection();
		SSLContext sc = SSLContext.getInstance("SSL");
		conn.connect();
//		BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())) ;
//		String input = "" ;
//		
//		while((input = br.readLine()) != null){
//			 System.out.println(input);
//		}
		
	}

	private static void trustAllHttpsCertificates() throws Exception{
		
		TrustManager[] tms = new TrustManager[1];
		TrustManager tm = new CustomTrustManager();
		tms[0] = tm ;
		
		SSLContext context = SSLContext.getInstance("SSL");
		context.init(null, tms, null);
		HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
	}
	
	
	static class CustomTrustManager implements X509TrustManager{

		@Override
		public void checkClientTrusted(X509Certificate[] chain, String authType)
				throws CertificateException {
			
		}

		@Override
		public void checkServerTrusted(X509Certificate[] chain, String authType)
				throws CertificateException {
			
		}

		@Override
		public X509Certificate[] getAcceptedIssuers() {
			return null;
		}
	}
}


java SSL 简单操作demo

标签:java ssl

原文地址:http://langlichong.blog.51cto.com/8846944/1737072

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!