HTTP/HTTPs背后的故事

当访问一个网址之后发生了什么。
譬如说访问 https://www.baidu.com 之后。

首先先说一下 http 时代,访问 http://www.baidu.com之后。
先说流程:

  1. www.baidu.com.cn 转化为对应的IP;
  2. 通过IP及端口号建立TCP连接传输数据。

因为http及https都是基于网络层TCP之上的应用层服务,因此其必须要满足TCP通讯的基本要求,即网络通讯的五元组(源IP,源端口,目的IP,目的端口,协议)。

需要把 www.baidu.com 转换成对应的IP,转换的过程需要DNS服务器协助。

由于http不加密导致中间的代理都能够看到传输的是什么,非常很特别的不安全。因此还是希望能够把中间的内容加密一下。

加密

加密的话就分为对称加密和非对称加密两种。
对称加密特点是快,非对称加密慢但是安全。

为了用户体验当然是越快越好了,但是这样就有一个怎么让两方都知道用什么密钥的问题,因此设计了一个操作即使用非对称加密加密对称加密的密钥,然后双方使用对称加密的密钥通讯。
具体流程如下:

客户端 服务器 clientHello 公钥 对称密钥(一般来说是个时间戳之类变化的) 对称密钥加密的内容 对称密钥加密的内容 客户端 服务器

数字证书

这里边有个比较严重的问题就是,由于互联网一个请求会经过很多层代理,因此客户端收到的公钥是否真的是服务器发来的,而不是中间某层代理替换过的,或者说子网内部是否有人假冒服务等情况。为了让这个流程走通,又引入了数字证书。
数字证书分为根证书跟普通证书,数字证书是由CA机构颁发的,CA机构也分级,CA机构分级可以防止互联网整体的私钥暴露风险降低一些,也防止活干不过来。
数字证书的内容包括:证书对应的公钥、域名、有效期、签发机构、数字指纹等等,其中数字指纹是把其他东西给hash一下之后对生成的hash编码使用机构自身的私钥加密,客户端收到的时候使用公钥揭秘一下数字指纹,然后也把证书内部相同的东西给hash一下然后对比是否一致,如果没问题,说明这个证书没有修改过,就是这个网站的。
但是证书也能伪造,那为什么要信任从网络上获取的这个证书呢。。。

证书信任链

首先CA机构都是大公司,卖的是信用,因此选择相信。
百度买的证书是他们授信的,CA公司信任他,那么我们也信任他,爱屋及乌。
因此数字证书的验证流程及为:

百度 二级CA CA 验证 验证 信任 信任 百度 二级CA CA

一般操作系统或者浏览器内部都已经预制了CA机构的证书,这部分证书都是可信的。

HTTPs

这样整体流程修改为:

客户端 服务器 clientHello 证书 验证证书有效性 对称密钥(一般来说是个时间戳之类变化的) 对称密钥加密的内容 对称密钥加密的内容 客户端 服务器

题外

证书类型一般写的是 SSL/TLS,那么这两种协议有啥区别呢。
其实最开始的协议是 SSL1.0 -> SSL2.0 -> SSL3.0,不过这三都有缺陷,具体是啥不太好说,然后为了弥补这个问题,搞出来了 TLS1.0 -> TLS1.1 -> TLS1.2,但是由于历史问题,目前大多沿用提一下SSL的说法,其实目前基本上都是使用的TLS协议。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xyccstudio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值