https客户端与服务器交互过程梳理

Https涉及到的主体

  1. 客户端。通常是浏览器,也可是自己编写的各种语言的客户端程序
  2. 服务端。一般指的是支持https的网站
  3. CA(certificate authorites)机构。HTTPS证书签发和管理机构。

发明Https的动机

1.认证正在访给问的网站。什么是认证网站?比如我们访问支付宝,怎么样确定我们访问的是阿里巴巴官方提供的支付宝而不是假冒的钓鱼网站?

  1. 保证所传输数据的私密性和完整性。http是明文传输,所以在同一网络中的其他用户可以通过网络抓包来窃取和篡改数据包的内容,甚至运营商或者Wi-Fi提供者,都有可能篡改http报文,添加广告以进行盈利。

Https的工作流程

https客户端与服务器交互过程梳理_第1张图片
image.png

可以看到工作流程基本分为3个部分:

  1. 浏览器客户端维护一个受信任的CA机构列表,并保存了这些机构的证书。第一阶段,服务器会提供经CA机构认证颁发的服务器证书。如果认证该证书的CA机构存在与客户端浏览器的受信任CA机构列表中,并且服务器证书中的信息与当前正在访问的网站(域名)等一致,那么浏览器就认为改服务端是可信的,并且从服务器证书中取出服务器公钥。如果证书提供的CA机构不存在于浏览器受信任的CA机构列表中,则浏览器会提示用户,根据用户的选择,决定是否浏览当前网站。我们也可以管理这个受信任的CA机构列表,添加或者删除。
  2. 协商会话密钥。客户端在认证完服务器,获得服务器的公钥之后,利用该公钥和服务器进行加密通信,协商出两个会话密钥,分别用于加密客户端往服务器发送数据的客户端会话密钥,用于加密服务端往客户端发送数据的服务端会话密钥,在已有服务器公钥,可以加密通讯的前提下,还要协商出两个会话密钥是因为非对称加密相对复杂度更高,在数据传输过程中,使用对称加密,可以节省计算资源。另外会话密钥是随机生成的,每次协商都有不一样的结果,所以安全性比较高。
  3. 加密通讯,此时客户端服务器双方都有了本次通讯的会话密钥,之后传输的http数据,度通过会话密钥加密。这样网络上的其他用户,将很难窃取和篡改客户端和服务端之间传输的数据,从而保证了数据的私密性和完整性。

使用https的流程

https客户端与服务器交互过程梳理_第2张图片

总结

  1. 说是讨论Https,事实上Https就是Http跑在SSI或者TLS上,所以本文讨论的原理和流程其实是SSL和TLS的流程,对于其他使用SSL和TLS的应用层协议,本文一样有效。
  2. 本文只讨论了客户端验证服务端,服务端也可以给客户端颁发证书并验证客户端,做双向验证。
  3. 由于采用了加密通讯,Https无疑比HTTP更消耗服务器资源。这也是很多公司明明支持Https却采用Http的原因。

你可能感兴趣的:(https客户端与服务器交互过程梳理)