加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

理解 HTTPS 的工作原理

发布时间:2019-08-20 21:31:06 所属栏目:教程 来源:IT生涯
导读:副标题#e# HTTPS,也称作HTTP over TLS。TLS的前身是SSL,TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。本文着重描述TLS协议的1.2版本。 下图描述了在TCP/IP协议栈中TLS(各子协议)和HTTP的关系 Credit: Kaushal Kumar Panday From: SS
副标题[/!--empirenews.page--]

HTTPS,也称作HTTP over TLS。TLS的前身是SSL,TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。本文着重描述TLS协议的1.2版本。

理解 HTTPS 的工作原理

下图描述了在TCP/IP协议栈中TLS(各子协议)和HTTP的关系

理解 HTTPS 的工作原理

Credit: Kaushal Kumar Panday From: SSL Handshake and HTTPS Bindings on IIS

其中Handshake protocol,Change Ciper Spec protocol和Alert protocol组成了SSL Handshaking Protocols。

HTTPS和HTTP协议相比提供了:

  • 数据完整性:内容传输经过完整性校验
  • 数据隐私性:内容经过对称加密,每个连接生成一个唯一的加密密钥
  • 身份认证:第三方无法伪造服务端(客户端)身份

其中,数据完整性和隐私性由TLS Record Protocol保证,身份认证由TLS Handshaking Protocols实现。

总览

使用RSA算法的SSL握手过程是这样的:

理解 HTTPS 的工作原理

Source: Keyless SSL: The Nitty Gritty Technical Details

  1. [明文] 客户端发送随机数client_random和支持的加密方式列表
  2. [明文] 服务器返回随机数server_random,选择的加密方式和服务器证书链
  3. [RSA] 客户端验证服务器证书,使用证书中的公钥加密premaster secret发送给服务端
  4. 服务端使用私钥解密premaster secret
  5. 两端分别通过client_random,server_random和premaster secret生成master secret,用于对称加密后续通信内容

证书(Digital certificate)

那么什么是证书呢?

理解 HTTPS 的工作原理

证书中包含什么信息:

  • 证书信息:过期时间和序列号
  • 所有者信息:姓名等
  • 所有者公钥

为什么服务端要发送证书给客户端?

互联网有太多的服务需要使用证书来验证身份,以至于客户端(操作系统或浏览器等)无法内置所有证书,需要通过服务端将证书发送给客户端。

客户端为什么要验证接收到的证书?

  1. 客户端<------------攻击者<------------服务端 
  2.  伪造证书 拦截请求 

客户端如何验证接收到的证书?

为了回答这个问题,需要引入数字签名(Digital Signature)。

  1. +---------------------+ 
  2. | A digital signature | 
  3. |(not to be confused | 
  4. |with a digital | 
  5. |certificate) | +---------+ +--------+ 
  6. | is a mathematical |----哈希--->| 消息摘要 |---私钥加密--->| 数字签名 | 
  7. |technique used | +---------+ +--------+ 
  8. |to validate the | 
  9. |authenticity and | 
  10. |integrity of a | 
  11. |message, software | 
  12. |or digital document. | 
  13. +---------------------+ 

将一段文本通过哈希(hash)和私钥加密处理后生成数字签名。

假设消息传递在Bob,Susan和Pat三人之间发生。Susan将消息连同数字签名一起发送给Bob,Bob接收到消息后,可以这样验证接收到的消息就是Susan发送的

  1. +---------------------+ 
  2. | A digital signature | 
  3. |(not to be confused | 
  4. |with a digital | 
  5. |certificate) | +---------+ 
  6. | is a mathematical |----哈希--->| 消息摘要 | 
  7. |technique used | +---------+ 
  8. |to validate the | | 
  9. |authenticity and | | 
  10. |integrity of a | | 
  11. |message, software | 对 
  12. |or digital document. | 比 
  13. +---------------------+ | 
  14.  | 
  15.  | 
  16.  +--------+ +---------+  
  17.  | 数字签名 |---公钥解密--->| 消息摘要 |  
  18.  +--------+ +---------+ 

当然,这个前提是Bob知道Susan的公钥。更重要的是,和消息本身一样,公钥不能在不安全的网络中直接发送给Bob。

此时就引入了证书颁发机构(Certificate Authority,CA),CA数量并不多,Bob客户端内置了所有受信任CA的证书。CA对Susan的公钥(和其他信息)数字签名后生成证书。

Susan将证书发送给Bob后,Bob通过CA证书的公钥验证证书签名。

Bob信任CA,CA信任Susan 使得 Bob信任Susan,信任链(Chain Of Trust)就是这样形成的。

事实上,Bob客户端内置的是CA的根证书(Root Certificate),HTTPS协议中服务器会发送证书链(Certificate Chain)给客户端。

TLS协议

TLS协议包括TLS Record Protocol和TLS Handshake Protocol。总览中的流程图仅涉及到TLS Handshake Protocol。

TLS Record Protocol

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读