互联网|万字长文拿下HTTPS,面试不再慌!( 七 )
如果 CA 失误或者被欺骗 , 签发了错误的证书 , 虽然证书是真的 , 可它代表的网站却是假的 。
还有一种更危险的情况 , CA 被黑客攻陷 , 或者 CA 有恶意 , 因为它(即根证书)是信任的源头 , 整个信任链里的所有证书也就都不可信了 。
这两种事情并不是耸人听闻 , 都曾经实际出现过 。 所以需要再给证书体系打上一些补丁 。
针对第一种 , 开发出了 CRL(证书吊销列表 , Certificate revocation list)和 OCSP(在线证书状态协议 , Online Certificate Status Protocol) , 及时废止有问题的证书 。
对于第二种因为涉及的证书太多 , 就只能操作系统或者浏览器从根上下狠手了 , 撤销对 CA 的信任 , 列入黑名单 , 这样它颁发的所有证书就都会被认为是不安全的 。
我们来看一下 Github 的数字证书长什么样子:
本文插图
证书上的信息可以得知:类型是 EV , 拥有最高权威认证;过期时间;证书所属组织;证书签发机构 。
TLS 协议的组成
当你在浏览器地址栏里键入 HTTPS 开头的 URI , 再按下回车 , 会发生什么呢?
浏览器首先要从 URI 里提取出协议名和域名 。
因为协议名是 HTTPS , 所以浏览器就知道了端口号是默认的 443 , 它再用 DNS 解析域名 , 得到目标的 IP 地址 , 然后就可以使用三次握手与网站建立 TCP 连接了 。
在 HTTP 协议里 , 建立连接后 , 浏览器会立即发送请求报文 。 但现在是 HTTPS 协议 , 它需要再用另外一个握手过程 , 在 TCP 上建立安全连接 , 之后才是收发 HTTP 报文 。
这个握手过程与 TCP 有些类似 , 是 HTTPS 和 TLS 协议里最重要、最核心的部分 。
在讲 TLS 握手之前 , 先简单介绍一下 TLS 协议的组成 。
TLS 包含几个子协议 , 你也可以理解为它是由几个不同职责的模块组成 , 比较常用的有:记录协议、警报协议、握手协议、变更密码规范协议等 。
记录协议(Record Protocol)规定了 TLS 收发数据的基本单位:记录(record) 。
它有点像是 TCP 里的 segment , 所有的其他子协议都需要通过记录协议发出 。
但多个记录数据可以在一个 TCP 包里一次性发出 , 也并不需要像 TCP 那样返回 ACK 。
警报协议(Alert Protocol)的职责是向对方发出警报信息 , 有点像是 HTTP 协议里的状态码 。
比如 , protocol_version 就是不支持旧版本 , bad_certificate 就是证书有问题 , 收到警报后另一方可以选择继续 , 也可以立即终止连接 。
握手协议(Handshake Protocol)是 TLS 里最复杂的子协议 , 要比 TCP 的 SYN/ACK 复杂的多 , 浏览器和服务器会在握手过程中协商 TLS 版本号、随机数、密码套件等信息 , 然后交换证书和密钥参数 , 最终双方协商得到会话密钥 , 用于后续的混合加密系统 。
变更密码规范协议(Change Cipher Spec Protocol) , 它非常简单 , 就是一个通知 , 告诉对方 , 后续的数据都将使用加密保护 。 那么反过来 , 在它之前 , 数据都是明文的 。
下面的这张图简要地描述了 TLS 的握手过程 , 其中每一个框都是一个记录 , 多个记录组合成一个 TCP 包发送 。
所以 , 最多经过两次消息往返(4 个消息)就可以完成握手 , 然后就可以在安全的通信环境里发送 HTTP 报文 , 实现 HTTPS 协议 。
在 TCP 完成三次握手建立连接之后 ,HTTPS 开始加密认证握手流程 。 TLS 的握手过程如下:
本文插图
以上过程我们可以使用 wireShark 抓包工具看到 。
在 TCP 建立连接之后 , 浏览器会首先发一个 client_hello 消息 , 里面有客户端的版本号、支持的密码套件 , 还有一个随机数(Client Random) , 用于后续生成会话密钥:
推荐阅读
- 互联网|上线半年收获6700万用户,这款聚焦下沉用户的陌生人社交APP是怎么做到的?
- 互联网|5G商用一周年,华为云向互联网企业大抛绣球
- 互联网|中台产品经理实战(14):中台与SaaS、微服务关系
- 互联网|行业观察 | 你所不知道的5G消息
- 互联网|多名知名人物推特被黑,拜登奥巴马都“中招”,比尔盖茨也在其内
- 互联网|发放高利贷,还要窃取用户信息?这些金融APP在秀“道德底线”
- 互联网|东莞先知:数字智能,先觉“先知”
- 云计算|从互联网到AI崛起,上海能弯道超车吗?
- 行业互联网,5G|江苏有线顺利完成园区5G信号开通测试
- 行业互联网,AI人工智能|城市教育大脑以“ AI+ 大数据”为核心 , 引领教育变革
