转载加工自
http://www.jianshu.com/p/650ad90bf563
1.客户端首先将自己支持的加密算法 发送给服务器
2.服务器从客户端发来的加密算法中,挑出一组加密算法和HASH算法,并将自己的身份信息以证书的形式发回给客户端。 证书中包含了网站的地址,加密用的公钥,以及证书的颁发机构等。
3.客户端收到服务器发来的数据包后 会做一下事情:
- 验证证书是否合法。一般来说,证书是用来验证站点是否合法的标志。如果给证书来自权威的第三方颁发和签名,则说明证书合法。
- 证书合法,或者客户端接受和信任了不合法的证书,则客户端就会随机产生一个串序列号,使用服务器发过来的公钥进行加密。这时候,一条返回的消息就基本生成了
- 最后使用服务器挑选的HASH算法,将刚才的消息是用刚才的随机数进行加密,生成相应的消息校验值,与刚才的消息一同发给服务器。
4.服务器接收到客户端发来的消息后,会做这么几件事情:
- 使用私钥解密上面2)中公钥的加密信息,得到客户端产生的随机序列号。
- 使用该随机序列号,对该消息进行加密,验证得到的校验值是否与客户端发来的一致。如果一致说明消息未被篡改,可以信任。
- 最后,使用该随机序列号,加上之前第2)步种选择的加密算法,加密一段 握手消息,发给客户端,同时HASH值也带上。
5.客户端收到服务器端的消息后,接着做这么几件事
- 计算HASH值是否与发回的消息一致
- 检查消息是否为握手消息
6.握手结束后,客户端与服务器端使用握手阶段产生的随机数以及挑选出来的算法进行对称加解密的传输。
好了我们大概已经知道了HTTPS是如何加密的了,那么这个相互认证过程是怎么样的呢 ?
在网上看到了这篇博客,http://blog.csdn.net/yuwuchaio/article/details/50469183 把他描述的剪切下来了
FB6F84F5-0C42-42ED-873D-164C040B7AB8.png
注意黄色的部分,这个指明了,我们平时使用的一个场景。这篇文章会很长,不仅仅是为了解释HTTPS,还为了能够增加记忆,当日后想看看的时候,就能通过读这边文章想起大部分的HTTPS的知识。下边解释一些更加详细的HTTPS过程。
Paste_Image.png
9A971961-31D6-404F-B244-CE4BF3C9C75E.png
网友评论