当前位置: 首页 > news >正文

https原理

首先说一下几个概念:对称加密、非对称加密

对称加密:

    客户端和服务端使用同一个秘钥,分两种情况:
        1、所有的客户端和服务端使用同一个秘钥,这个秘钥被泄漏后数据不再安全
        2、每个客户端生成一个秘钥,如果客户端比较多,这样在服务端就有很多个秘钥,对服务端造成压力

非对称加密:

      1、客户端和服务端使用不同的秘钥,服务端生成私钥和公钥,在客户端请求服务端建立连接时 服务端将公钥发给客户端,私钥只在服务端保存
      2、私钥加密的公钥可以解密,公钥加密的私钥可以解密,公钥加密的公钥不能解密,私钥加密的私钥不能解密

        公钥和私钥从哪里来:在服务端通过openSSL生成私钥,然后通过私钥再生成公钥,这样保证了私钥和公钥的关联

三次握手和四次握手:

       客户端和服务端成功建立连接的过程叫做三次握手,建立连接之后客户端需要验证证书的合法性、生成 session secret 用于数据传输的对称加密等,具体步骤参考 HTTPS四次握手的过程-转载 - 知乎

Https的实现原理:

        https的过程分为证书验证和数据传输阶段,具体交互过程如下,在证书验证阶段采用非对称加密,数据传输阶段采用对称加密,因为对称加密的效率高于非对称加密;

       https是长链接,四次握手(证书验证)成功后就可以进行数据的传输了;

证书验证阶段:

       客户端向服务端发起请求时服务端会返回一个证书,证书里面就包含了公钥,客户端验证证书是否合法,如不合法则会出现下面类似的提示,如果要继续访问也是可以的

数据传输阶段:

       1、当客户端验证证书合法,则生成一个随机数

       2、通过公钥加密随机数,把加密后的随机数发给服务端

       3、服务端通过私钥对随机数解密,通过这个随机数构造对称加密算法,使用算法加密数据后返回

什么样的证书才是合法的?

        只有CA认证的权威机构颁发 的证书才认为是合法证书,这样就避免了“中间人攻击”问题:

        中间人攻击是在客户端和服务端之间穿件一个伪服务,客户端从这个伪服务中获取公钥、收发数据等,这个伪服务从真正的服务器上获得公钥和收发数据

        因为伪服务不是一个CA认证的机构,它生成的证书就是一个无效证书,只有真正的服务器的证书才是有效的

证书的验证:

        一个证书通常包含以下信息:颁发者机构、有效期、公钥、所有者、签名算法、指纹等

        1、每份签发证书都可以根据验证链查找对应的根证书,操作系统、浏览器会在本地存储权威机构的根证书,利用本地根证书完成对应机构签发证书的验证

        2、与 CA 服务器校验判断证书是否被篡改

        3、通过 CRL和 OCSP验证判断证书是否已吊销

        以上都满足的情况下才认为证书是合法的

http://www.lryc.cn/news/217391.html

相关文章:

  • FFmpeg直播能力更新计划与新版本发布
  • 面试算法55:二叉搜索树迭代器
  • Linux Crontab 定时任务
  • HiveSQL高级进阶技巧
  • 【Flutter】Flutter 动画深入解析(1):掌握 AnimationController 的使用
  • 安装富文本组件
  • Tomcat下载地址(详细)
  • 领星ERP如何无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统
  • Django实战项目-学习任务系统-自定义URL拦截器
  • [已解决]该主机与 Cloudera Manager Server 失去联系的时间过长。 该主机未与 Host Monitor 建立联系。
  • 通过在Z平面放置零极点的来设计数字滤波器
  • linux环境docker部署nginx对生产日志按日切割并压缩处理
  • 【Spring Boot】发送邮件功能
  • ELK问题整理
  • 《黑客帝国:破解编程密码》——探索编程世界的奥秘
  • 【优选算法系列】【专题六模拟】第一节.1576. 替换所有的问号和495. 提莫攻击
  • 路由器基础(十二):IPSEC VPN配置
  • Python 获取cpu、内存利用率
  • Apache ECharts简介和相关操作
  • 怎么看待工信部牵头推动人形机器人发展
  • Hikari源码分析
  • 修改YOLOv5的模型结构
  • React 与 React Native 区别
  • Android 12.0 系统system模块开启禁用adb push和adb pull传输文件功能
  • 基于单片机的衣物消毒清洗机系统设计
  • 将 UniLinks 与 Flutter 集成(安卓 AppLinks + iOS UniversalLinks)
  • Spring-Spring 之底层架构核心概念解析
  • 电脑版WPS怎么将更新目录加到快速访问栏
  • 保障效率与可用,分析Kafka的消费者组与Rebalance机制
  • “1-5-15”原则:中国联通数字化监控平台可观测稳定性保障实践