[JavaEE初阶] 防止网络传输中的中间人入侵---证书

上节回顾~

HTTPS=HTTP+SSL(加密协议)

1.引入对称密钥:

  • 客户端生成对称密钥
  • 通过网络把密钥传输给服务器
  • 双方使用对称密钥对数据进行加密解密
  • 缺陷:对称密钥是明文传输的

2.引入非对称密钥,把对称密钥进行加密传输

  • 注意私钥是服务器才有
  • 非对称加密,成本是非常高的,不太适合加密大量数据
  • 对称加密,成本低,适合对大量数据进行加密

当前场景有三个密钥

  • 一个是用户端生成的对称密钥(可以理解为用户密码)
  • 一个是服务器生成的公钥,可以公示出来告诉所有设备
  • 一个是服务器生成的私钥,只有服务器自己知道
    上述这样的流程存在重大安全隐患,黑客可以通过特殊手段来获取到对称密钥,破坏后续传输的安全性

中间人入侵

中间人入侵过程

校验机制---证书

引入校验机制,中间人攻击的关键,在于客户端无法区分收到的公钥是不是真正的 来自服务器的公钥还是被黑客篡改过的公钥->想办法对公钥进行校验

于是引入了证书->证明公钥是合法的

这就是为什么使用Fidder时,需要安装证书

->fidder的工作原理就是中间人攻击,只不过是咱们授权的(你安装了fidder证书,就相当于授权了)

1.服务器向第三方公证机构申请证书

2.客户端询问证书

3.客户端校验证书

4.完整流程

问题一:客户端如何确保拿到的pub2是公证机构的pub2,而不是黑客伪造的pub2?

  • pub2不是通过网络传输的,而是用户操作系统中内置的(安装好系统,系统就内置了一系列知名公证机构的公钥)
  • 只要安装正版系统,而不是搞黑客的盗版系统,就可以信任pub2是正确合法的

问题二:客户端收到的证书 "服务器的公钥"可能被黑客篡改呀?

  • 但是改后的数,算出的校验和,与服务器中的原始校验和就对不上了
  • 此时客户端就会报错
  • 浏览器就会弹出一个红色的页面,告诉你网站不安全,是否要继续访问(证书的校验失败)

问题三:黑客能否自己申请一个证书,用自己的证书,替换整个服务器的证书呢?

  • 证书中包含服务器的域名
  • 黑客申请的证书的域名 和 正经服务器证书的域名肯定是不同的
  • 浏览器这边还是可以验证,输入的URL的域名和 得到证书的域名是不匹配的
  • 不匹配->浏览器就会弹出一个红色的页面,告诉你网站不安全,是否要继续访问(证书的校验失败)

问题四:那如果黑客把整个证书给换了,再把域名给伪造了呢?

  • 证书是要在公证机构这边申请的,每一个公司/组织申请的域名是不一样的

问题五:若黑客修改证书,同时修改服务器的公钥和数字签名呢?

  • 修改公钥,就要重新计算校验和,还需要对校验和重新加密
  • 如果黑客使用自己的私钥加密,就会导致客户端系统内置的公证机构公钥 和 黑客的私钥匹配不上
  • 不匹配->浏览器就会弹出一个红色的页面,告诉你网站不安全,是否要继续访问(证书的校验失败)
  • 那使用公证机构的私钥来加密吗(不然和系统内置的公钥就匹配不上了呀)->黑客能拿到公证机构的私钥吗?[狗头]

问题五:那黑客本地系统不是也能看到公钥和证书吗?

  • 引入证书,是防止黑客修改 服务器的公钥
  • 黑客看到 系统内置的公证机构的公钥是啥->无所谓(公钥本身就是公开的)
  • 黑客看到校验和->也无所谓->校验和本身就是用来校验数据的,本身并没有什么含义
  • 整个过程只是为了保证客户端可以验证 服务器的公钥是合法的
  • 只要服务器的公钥合法了 就可以使用服务器的公钥对 "客户端产生的对称密钥" 进行加密
  • 后续继续使用对称密钥进行加密交流
  • 业务数据,黑客是看不到一点的

上述流程是面试的高频考点

1.引入对称加密

2.引入非对称加密

3.中间人攻击

4.引入证书&数字签名

想知后续如何,且听下回分解~

END✿✿ヽ(°▽°)ノ✿

相关推荐
歪歪10016 小时前
解决多 Linux 客户端向 Windows 服务端的文件上传、持久化与生命周期管理问题
linux·运维·服务器·开发语言·前端·数据库·windows
一匹电信狗16 小时前
【C++11】右值引用+移动语义+完美转发
服务器·c++·算法·leetcode·小程序·stl·visual studio
Lowjin_17 小时前
UDP-复用分用
网络·网络协议·udp
乌萨奇也要立志学C++17 小时前
【Linux】进程间通信(二)命名管道(FIFO)实战指南:从指令操作到面向对象封装的进程间通信实现
linux·服务器
此生只爱蛋17 小时前
【Linux】自定义协议+序列和反序列化
linux·服务器·网络
huangyuchi.17 小时前
【Linux网络】Socket编程实战,基于UDP协议的Dict Server
linux·网络·c++·udp·c·socket
jenchoi41318 小时前
【2025-11-05】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
网络·安全·web安全·网络安全
爱编程的鱼21 小时前
403 是什么意思?一文读懂 HTTP 状态码 403 及解决方法
网络·网络协议·http
Unstoppable2221 小时前
八股训练营第 8 天 | TCP连接三次握手的过程?TCP连接四次挥手的过程?HTTP的Keep-Alive是什么?
网络·tcp/ip·http·八股