平常我们大家上网大部分都采用明文的http,可是当涉及到机密的数据时,我们就要用到密文的方式了,比如说电子商务的交易,网上银行的支付等都是采用https密文通信。今天我来就来了解https的过程及原理。
1。首先客服端的浏览器向服务器发送客服端的ssl 协议的版本号及支持的加密算法种类,还有其他的通信中要的一些参数,为了让大家更容易的理解我们来做个试验。首先我们在浏览器中输入http://mail.126.com/打开以后,我们看到在登陆框的下面有 SSL安全登录选项,我们勾选这个选项即采用https来通信,输入账号和密码,同时打开sniffer工具,可以看到客服端首先向服务器发送了一个Client Hello包
安全系列之----https通信_职场
 
上图中cipher说明了客服端支持的加密算法,同时也可以看到https采用了tcp 443端口来承载。顺便说一下上图中的TLS对应SSL的3.1的版本。
2. 接下来我们看看服务器端会有什么反应,从sniffer的结果中我们看到了他返回的是Server Hello包,服务器向客户端传送 SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,我们打开这个包来看看
 
安全系列之----https通信_职场_02
 
从这个包中我们可以看到服务器选择了TLS_RSA_WITH_RC4_128_SHA加密算法,可以看到这是客服端算法列表中的第二个算法。
3.接下来我们看看他们又怎样通信呢?再次打开sniffer,我们看到,第3个包还是从服务器端发送的Certificate,Server Hello Done这个包,我们把它打开来看看
 
安全系列之----https通信_通信  IT  SSL  https 安_03
 
看到了Certificate了吧,这就是服务器向客服端发过来的证书,证书的格式也确实如此,不信我们随便打开一张证书看看
 
安全系列之----https通信_休闲_04
 
 
应该是一样的吧,呵呵,大家再仔细看看sniffer中的那张图,它包含了服务器端的的公钥信息,就是subjectPublickeyinfo字段中的信息。
4.家下来我们再来看看第四个包,客服端拿到了服务器端的公钥后 ,他就开始和服务器端进行会话密钥的协商,客服端会用服务器端的公钥加密会话密钥,传送到服务器端。因此客服端和服务器端就共享了会话的密钥,以后要传送任何的数据都会用会话密钥来加密。
5.不知道大家想过没有,既然客服端拿到了服务器端的公钥,它为什么不用服务器端的公钥来加密要传送的数据呢?而是和服务器端协商出一个会话密钥。这就是我们下次要讲的PKI技术。