HTTPS交互流程分析

Publish: August 1, 2016 Category: WEB No Comments

概念

先理解几个概念
对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等,示意图如下:
20080419173658592.png

非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等,示意图如下:
20080419173659971.png

HTTPS 服务端和客户端交互流程

①客户端的浏览器向服务器传送客户端SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。
②服务器向客户端传送SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。
③客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。
④用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后传给服务器。
⑤服务器用私钥解密“对称密码”(此处的公钥和私钥是相互关联的,公钥加密的数据只能用私钥解密,私钥只在服务器端保留。然后用其作为服务器和客户端的“通话密码”加解密通讯。同时在SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。
⑥客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑤中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。
⑦服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑤中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。
⑧SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。
一图胜千言,先上图
HTTPS流程 (1).png

注意问题

(1)请注意第2步时,当服务器给客户端返回自己的证书时,证书包含三部分内容,公钥、名称、数字签名等信息;注意数字签名是加密的,数字签名是用颁发机构的私钥对本证书的公钥,名称以及其他信息做hash散列加密而成的,所以客户端需要解密数字签名来验证该证书是否是合法可靠的,那怎么解密呢,客户端浏览器会找到该证书的根证书颁发机构,然后在本机上的证书管理器里寻找 那些受信任的根证书颁发机构列表是否有该证书的根证书颁发机构,如果有,则用该根证书的公钥解密服务器下发的证书
a,如果不能正常解密,则服务器下发的证书则被认为是伪造的,浏览器弹出提示框
b,如果能正常解密,则获取到公钥,名称,数字签名信息跟本身的公钥等其他信息比对一下,确认公钥没有被篡改,如果公钥不一致,则依然被认为是不可信的。 因此客户端验证服务器的合法性取决于公钥,而公钥的合法性取决于ca证书颁发机构的合法性,这里会形成一个信任链,而终点则是CA根证书,根证书是CA机构自己办法给自己的,根证书是一个特殊的数字证书,公钥是公开的,而私钥是被CA机构保存在硬件中的,所以证书的安全性取决于你对该CA机构的信任,反过来说,加入CA机构的密钥被窃取,那么该CA机构颁发的所有证书将会存在灾难性安全问题;
就像你验证身份证是否真实,肯定去公安局验证,那么谁来保证公安局是合法可靠的呢,没人能保证,公安局自己生命自己是合法可靠的,就这么简单
(2)ok,上边扯了那么多,无为就为了一个目的,客户端根据服务器下发的证书验证了服务器是真实可靠的,然后进入第3步,客户端生成一个密钥,就是对称加密算法的密钥用于加密后续的数据传输

总结一下

https传输在建立连接时使用的是非对称加密算法,一旦连接建立完成,有后续的通讯则使用了对称加密算法,这样做的好处是有利于数据传输效率,众所周知非对称加密算法的性能很差劲,你懂得。

两篇参考文章

http://www.barretlee.com/blog/2015/10/05/how-to-build-a-https-server/ HTTPS证书生成原理和部署细节

http://iluoxuan.iteye.com/blog/1736275 SSL身份认证原理

Tags: https交互流程, https剖析

Related Posts:
  • [尚无相关文章]

Leave a Comment