HTTPS
HTTPS:安全版HTTP,利用SSL/TLS建立安全信道,加密数据包,HTTPS就是审批SSL外壳的HTTP
TLS是传输层加密协议,前身是SSL协议,两者不区分
建立HTTPS的过程
首先进行SSL/TLS握手(4次),协商数据传输时使用的密钥。
- 客户端发起ClientHello请求,向服务器发送:
- 支持的协议版本,如TLS1.0
- 一个客户端生成的随机数A(client random)
- 支持的加密、压缩方法
- 服务端回应ServerHello:
- 首先检查加密通信协议版本,如果客户端与服务端不一致,则关闭通信。
- 通过版本验证后,生成一个随机数B(server random)
- 确认使用的加密方法
- 数字证书
- 第一阶段握手结束
- 客户端对数字证书进行验证。验证成功后,生成一个随机数C(premaster secret),并使用公钥加密发送给服务端。发送客户端握手结束通知,同时发送之前发送的全部内容的hash值,供服务器校验。
- 服务端使用私钥解密随机数C。发送服务器握手结束通知,表示服务器握手阶段已经结束,同时发送之前发送的内容的hash值,供客户端校验。
- 客户端和服务端根据约定的加密方法,使用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值,与指纹对比,一致则证书没有被修改。
权威机构的根证书都预先嵌入在浏览器里。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南