Skip to content

HTTPS 加密层

参考链接

HTTP - TLS/SSL - TCP - IP - 数据链路层

HTTP 数据传输加密过程

加密套件列表

浏览器支持的加密方式有多少种

对称加密

  1. 浏览器发送对称加密套件列表和 client-random 随机数
  2. 服务器收到加密套件列表,选择加密方式和 service-random 随机数,返回给浏览器
  3. 浏览器和服务器返回确认信息

计算密钥

密钥都能用来解密

  1. 浏览器和服务器都有 client-random 和 service-random
  2. 浏览器和服务器使用相同的方法对 client-random 和 service-random 混合起来生成密钥 master-secret
  3. 使用 master-secret 加密传输数据

缺陷

client-random 和 service-random 都是明文的,拿到随机数和加密方式,以及利用随机数的生成密钥的算法都是公开的,也可以生成密钥来解析数据

非对称加密

非对称,公钥只有私钥能解密,私钥只有公钥能解密

  1. 浏览器发送非对称加密套件列表
  2. 服务收到非对称加密套件列表,返回加密方式和公钥
  3. 浏览器和服务器返回确认信息

加密数据

  1. 浏览器使用公钥加密数据
  2. 私钥只有服务器存在,利用私钥解密数据

缺陷

  1. 非对称加密算法效率太慢,影响数据传输速率
  2. 无法保证服务器发送给浏览器的数据安全(公钥是可以被拦截获取的)

对称加密 + 非对称加密

HTTPS 采用混合加密方式进行数据的加密

  1. 浏览器发送加密套件列表、非对称加密套件列表以及 client-random 随机数
  2. 服务器收到消息,选择加密方式以及生成公钥和 service-random 随机数
  3. 浏览器保存公钥,并生成随机数 pre-master
  4. 使用公钥加密 pre-master 发送给服务器确认 master-secret
  5. 服务器浏览器确认返回信息

加密数据

  1. 浏览器和服务器都拥有 client-random、service-random 以及 pre-master 三组随机数
  2. 使用三组随机数生成对称密钥,就可以使用对称加密方式传输数据

安全性

获取到 pre-master 随机数,但是是经过公钥加密过的,只有私钥才能解密

CA 证书

有了混合加密方式的传输数据仍然不是安全的(DNS 劫持替换 IP 地址)

加密方式

  1. 浏览器发送加密套件列表、非对称加密套件列表以及 client-random 随机数
  2. 服务器收到消息,选择加密方式以及返回数字证书和 service-random 随机数
  3. 浏览器获取数字证书中的公钥,并生成随机数 pre-master
  4. 使用公钥加密 pre-master 发送给服务器确认 master-secret
  5. 服务器浏览器确认返回信息

申请数字证书

  1. 准备一套公钥和私钥,私钥留着自己使用
  2. 向 CA 机构提交公钥以及相关信息(收费)
  3. CA 机构验证信息是否合理合法
  4. 信息审核通过,签发数字证书(公钥、组织信息、CA 的信息、有效时间、证书序列号等明文信息)以及一个 CA 生成的签名

CA 数字签名

  1. CA 使用 Hash 函数算法计算明文信息,并得出信息摘要
  2. CA 使用其自有的私钥对信息摘要进行加密,加密后的密文就是数字签名

验证数字证书

  1. 浏览器使用相同的 Hash 算法函数计算明文信息,得到信息摘要 A
  2. 再使用公钥对数字签名解密,得到信息摘要 B
  3. 信息摘要 A === 信息摘要 B

CA 是机构,会沿着 CA 机构链查找,直到根证书机构为止(否则视为不合法)

总结

  1. 申请数字证书是不需要提供私钥的,私钥永远只能存在于服务器上
  2. 数字证书最核心的内容就是使用其自有的私钥生成的数字签名
  3. 内置 CA 对应的证书称为根证书,最权威的机构(自签名证书)

数字证书拓展

数字证书

个人申请的证书属于 DV 类型;普通公司申请的证书属于 OV 类型;金融机构、银行、电商平台申请的证书属于 EV 类型(DV 自动验证,OV 和 EV 需要人工验证)

CA 机构的权威性,数字证书链,中间 CA(Intermediates CAs)和根 CA(Root CAs)

操作系统内置根证书,WebTrust(网络信任) 认证是电子认证服务行业中唯一的国际性认证标准(认证的根 CA 目前有 Comodo,geotrust,rapidssl,symantec,thawte,digicert),只有在操作系统中能追溯到数字证书链才能验证证书合法

Released under the MIT License.