我看了几篇微博,有的非常详实,作为深入学习资料非常好。
但是有的说是实例吧...无关测试代码太多,感觉就是画蛇添足。各种秘钥库管理感觉都是非必要的。
索性自己写一个。顺便记录一些常见的异常,如:
Cannot recover key
certificate_unknown
signature check failed
java.net.SocketException: Connection reset
Received fatal alert: handshake_failure
---------------------
>基础知识(有兴趣深入了解机制可见此)
简单看一下有关SSL的类的关系:
通信过程、加密原理和深入学习看此:
http://kb.cnblogs.com/page/162080/
---------------------
>开始实例
首先,你要知道普通的Socket是怎么建立的,如果你不了解这一项,见此:
http://blog.csdn.net/shenpibaipao/article/details/70176038
1.客户端的搭建
与常见的Socket搭建没有什么差别,唯一不同的是——sslsocket是从工厂类中获取的,如下:
//1.获取SSLSocketFactory对象
SocketFactory factory = SSLSocketFactory.getDefault();
//2.从工厂类中获取sslsocket并提供服务器ip和端口参数
Socket sslsocket = factory.createSocket("127.0.0.1", 9100);
//3.获取输出流,并包装成UTF-8编码的缓存字节流(注意包装成UTF8,否则会中文乱码)
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(sslsocket.getOutputStream(),"UTF-8"));
//4.开始输出文字等
out.write("This is mes