HTTPS

HTTPS:安全版HTTP,利用SSL/TLS建立安全信道,加密数据包,HTTPS就是审批SSL外壳的HTTP

TLS是传输层加密协议,前身是SSL协议,两者不区分

建立HTTPS的过程

首先进行SSL/TLS握手(4次),协商数据传输时使用的密钥。

  1. 客户端发起ClientHello请求,向服务器发送:
    • 支持的协议版本,如TLS1.0
    • 一个客户端生成的随机数A(client random)
    • 支持的加密、压缩方法
  2. 服务端回应ServerHello:
    • 首先检查加密通信协议版本,如果客户端与服务端不一致,则关闭通信。
    • 通过版本验证后,生成一个随机数B(server random)
    • 确认使用的加密方法
    • 数字证书
    • 第一阶段握手结束
  3. 客户端对数字证书进行验证。验证成功后,生成一个随机数C(premaster secret),并使用公钥加密发送给服务端。发送客户端握手结束通知,同时发送之前发送的全部内容的hash值,供服务器校验。
  4. 服务端使用私钥解密随机数C。发送服务器握手结束通知,表示服务器握手阶段已经结束,同时发送之前发送的内容的hash值,供客户端校验。
  5. 客户端和服务端根据约定的加密方法,使用ABC三个随机数生成对话密钥session key来加密后面的数据传输过程。
    三个随机数是为了密钥的随机性,三个伪随机来近似真随机

三个随机数的作用

生成随机数C即pre-master secret后结合随机数A和B生成Master-secret,然后使用master-secret生成hash secret和session secret。

在数据传输时,使用hash secret 对整个HTTP报文进行运算生成一个报文摘要(MAC)即签名添加在HTTP报文后面,然后使用session secret对整个报文(HTTp+MAC)进行加密。
服务端在收到数据后使用session secret进行解密,得到HTTP和MAC,然后使用hash secret进行计算,得出另外一个MAC,与客户端发来的MAC进行对比。

数字证书

数字证书的主要内容为:
- 公钥
- 颁发机构
- 持有者
- 有效期
- 签名
- 指纹及指纹算法
签名:CA基构将证书的指纹和指纹算法通过自己的根私钥加密得到
验证证书时,首先通过机构的根公钥解密证书签名,得到指纹和指纹算法,指纹是一个hash值。然后通过指纹算法对证书内容进行计算得到另外一个hash值,与指纹对比,一致则证书没有被修改。

权威机构的根证书都预先嵌入在浏览器里。

posted @   店里最会撒谎白玉汤  阅读(96)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示