客户端访问百度的整个过程_百度面试之https的握手过程

​最近看了介绍https的很多博客,好些都不太完整,在此做个总结,力图展示清楚https握手过程的全貌。若写得有误,还请指正;觉得写得不错,还请发扬知乎传统艺能,点赞收藏走起~​

https简介

我们知道http是明文传输的数据,存在着敏感数据被截获等风险。于是https应运而生。

简单来说,https=http+ssl/tls,即加密的http

ssl(Secure Socket Layer,安全套接字层)和tls(Transport Layer Security)都是用来加密的协议,可简单理解为加密算法不同

需提前掌握的概念

对称加密、非对称加密、公钥、私钥

https的握手过程(简易版)

1.客户端提交https请求

2.服务器响应客户,并把服务器公钥发给客户端

3.客户端验证公钥的有效性

4.有效后,客户端会生成一个会话密钥(一个随机数)

5.用服务器公钥加密这个会话密钥后,发送给服务器

6.服务器收到公钥加密的密钥后,用私钥解密,获取会话密钥

7.客户端与服务器利用会话密钥对传输数据进行对称加密通信https握手-1

客户端如何检验公钥是不是合法呢?

客户端拿着服务器发来的公钥再发请求去CA那做检验?

并不是。客户端其实需要预置CA签发的根证书,这个根证书中保存了CA的公钥。

而且在之前的第2步中,服务器发的并不是服务器公钥,而是由CA签发的服务器证书,这个证书包括了两部分:用CA私钥对服务器公钥以及其他网站信息加密后得到的的密文+对服务器公钥hash后的摘要。

服务器将证书发给客户端以后,客户端从CA根证书中获取CA公钥,对服务器证书的密文进行解密,得到服务器公钥(当然还有网站的其他信息,这里先忽略),然后再hash一次公钥,比较得到的结果和证书携带的摘要是否一致。

过程如下图所示:https握手过程-2

服务器证书的摘要

其实,服务器证书携带服务器公钥等信息(还包括域名、域名持有者、证书失效时间、证书签发时间等信息)的明文和这些信息hash后的摘要都是安全的。

假如服务器证书携带的是服务器公钥等信息的明文,客户端在解密密文得到服务器公钥等信息后,直接和证书携带的明文信息比较,也能判断明文信息是否被修改过。

因此,证书携带摘要而不是公钥等信息的明文目的在于:减少发送的数据量,从而减少数据发送时间

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值