HTTPS协议

HTTPS

HTTPS 也是应用层协议、在HTTP的基础上引入了加密层。

为什么要加密 ?

HTTP 协议按照文本的方式明文传输的、在传输数据的过程中可能被修改。

HTTPS 的工作过程

  • 明文 :要传输的原始数据
  • 密文 : 经过加密后的数据
  • 加密 : 将明文通过一系列转换变成密文
  • 解密 : 将密文通过一系列转换变成明文

对称加密

客户端和服务器拥有一个相同的密钥、通过这个密钥可以把明文加密成密文、密文解密成明文。服务器 / 客户端生成一个密钥、让对方也持有这个密钥。

一个服务器要为多个客户端服务、如果使用 相同的密钥 容易被获取、需要使用不同的密钥。因此需要先用网络传输把密钥给对方。假设客户端随机生成一个密钥并将这个密钥传输给服务器(也可以服务器生成密钥)。

但如果明文传输密钥、密钥在传输过程中被获取到、这个密钥也就没有作用

非对称加密

非对称加密需要 2 个密钥 : 公钥 和 私钥 。可以用 私钥加密公钥解密 或者 公钥加密私钥解密

由服务器生成公钥和私钥、服务器持有私钥、将 公钥 传输给客户端。客户端用这个 公钥 生成 对称密钥、再用 公钥 对 密钥 进行加密。在传输过程中如果密钥被获取了、没有私钥不能解密就无法获取到明文数据。服务器可以用私钥对客户端发过来的密钥进行解密、获取对称密钥。后面客户端和服务器就可以使用 这个密钥 进行对称加密、数据在传输过程中也就是安全的

非对称加密和对称加密配合使用

只用非对称加密可行吗 ?

对称加密 效率高占用的系统资源少。非对称加密 比较效率低占用系统资源多。用非对称加密传输密钥、用对称加密传输数据。

密钥安全 => 用密钥加密的数据也安全

但是非对称加密仍然存在 问题 : 可能被中间人攻击

之后再使用 对称加密 、已经没有作用了。中间人已经获取到了 密钥

证书

为了解决中间人攻击问题、引入证书的机制。通过第三方公信机构颁发的证书来证明公钥是可信的

证书是一个经过 CA(证书颁发机构)数字签名的数据文件。

证书上包含了以下信息:

  • 证书发布机构
  • 证书有效期
  • 公钥
  • 证书所有者
  • 签名
    ...

在客⼾端和服务器建⽴连接的时候、服务器给客⼾端返回⼀个证书。客户端收到公钥后,先通过 CA 的数字签名和域名验证确认它的身份,攻击者不能随意替换公钥

通过证书校验来验证通信对方是不是可信的

相关推荐
acd120092 小时前
Nginx 反向代理的缓冲区坑:后端响应大时接口偶发 502
java·运维·nginx
装不满的克莱因瓶2 小时前
支付订单成功异步MQ权益发放设计和开发
java·架构·系统架构·rabbitmq·硬件架构
高冷小鱼殿下2 小时前
内部类Lambda与枚举
java·开发语言
小蒜学长3 小时前
编程语言在线学习平台的设计与实现(代码+数据库+LW)
java·spring boot·后端·编程语言在线学习平台·在线编码
步行cgn3 小时前
Spring MVC 执行流程详解:一次请求的完整旅程
java·spring·mvc
增量星球3 小时前
Spring AI 2.0 Tool Calling 到底怎么跑起来的:从 @Tool 到两次模型调用
java·agent·springai·ai coding
步行cgn4 小时前
Spring MVC 九大核心角色详解:请求处理链路中的每一个关键组件
java·spring·mvc
智恒百亿4 小时前
一台 5090 八卡服务器怎么分给一个团队用?多模型多任务的显存分配实战
java·大数据·人工智能
瑞码空间4 小时前
面向接口编程与开闭原则在模拟 JDBC 驱动中的应用
java·jdbc