SSL是什么
百度、谷歌自己搜吧,你以为我会在这里告诉你?
安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密。
SSL是Netscape于1994年开发的,后来成为了世界上最著名的web安全机制,所有主要的浏览器都支持SSL协议。
目前有三个版本:2、3、3.1,最常用的是第3版,是1995年发布的。
SSL协议的三个特性
1 保密:在握手协议中定义了会话密钥后,所有的消息都被加密。
2 鉴别:可选的客户端认证,和强制的服务器端认证。
3 完整性:传送的消息包括消息完整性检查(使用MAC)。
SSL的位置
SSL介于应用层和TCP层之间。应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。
** 这里是HTTP封装过的,不是直接操作的socket**
//封装操作
SSLContext sslcontext = SSLContexts
.custom()
.loadTrustMaterial(trustStore, new TrustSelfSignedStrategy()) //加载本地信任证书 信任自签名策略
.loadKeyMaterial(clientStore, "123456".toCharArray()) //加载本地证书
.build(); //构造
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext); //制造一个socket
httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build(); //通过这个socket来生成一个http请求
// 创建http请求(get方式) delete put 全都有相应的方法
//共享一个cookie
HttpGet httpget = new HttpGet(url1);
HttpGet httpget2 = new HttpGet(url2);
//先上gradle配置
compile 'org.apache.httpcomponents:httpclient:4.5.2'
// https://mvnrepository.com/artifact/org.json/json
compile group: 'org.json', name: 'json', version: '20160810'
compile group: 'javax.mail', name: 'mail', version: '1.4.7'
compile group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.54'
compile group: 'org.bouncycastle', name: 'bcpkix-jdk15on', version: '1.54'
compile 'commons-codec:commons-codec:1.10'
testCompile group: 'junit', name: 'junit', version: '4.11'
//调用
String url1 = "https://mail.koal.com";
String url2 = "https://mail.koal.com/userMail!queryMailList.do?currentFolder.folderId=10";
//如果不想在操作COOKIE,就这么写
// url1为登录
// url2为拉取列表
//两次请求共用一个cookie
Getmail.ssl(url1, url2);
//两次请求用一个 cookieStore
// Getmail.ssl1(url1);
// Getmail.ssl2(url2);
import org.apache.http.HttpEntity;
import org.apache.h