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

快速了解Https通信原理

公钥和私钥的关系
  • 私钥由服务器持有,公钥所有人都知晓

  • 私钥加密的数据,使用公钥可以解密

  • 公钥加密的数据,只有私钥可以解开

  • 私钥和公钥之间的这种关系,是通过特定算法实现的,但是破解难度和成本极大,因此可以认为是相当安全的

  • 服务端发给浏览器的数据,由于公钥是公开的,谁都可以解密,因此不能直接用于数据通信

信任建立过程(非对称加密)
  • 服务端向权威CA机构,购买一份受信任的SSL证书

  • 浏览器向服务器发出请求,并携带自己的加密算法和摘要算法

  • 服务器收到浏览器的请求,选择浏览器要求的加密算法和摘要算法

  • 服务器将自己申请的数字证书返回给浏览器

  • 浏览器根据证书的颁发机构,去内置的证书列表中查找

    • 如果是权限证书机构,则取出对应的公钥
    • 如果不是可信机构,则警告证书不可信,是否继续使用
  • 浏览器用公钥去解密服务器发来的数字证书,得到证书中的域名,有效期等信息

    • 如果域名和实际访问地址不一致,或者已过有效期,则提示用户证书无效
  • 浏览器生成一个随机数R,保存到本地,用公钥加密后将R发送给服务器

  • 服务器用私钥解密,得到随机数R,保存到本地

数据通信过程(对称加密)
  • 服务器用R作为密钥,加密网页,发送给浏览器

  • 浏览器用R作为密钥,解密网页

  • 浏览器用R作为密钥,继续加密新的数据,并发送给服务器

设计原理

非对称加密方式,仅仅用来交换对称加密所需的秘钥R

当R被存储到双方本地后,后面的过程使用对称加密的方式通信,就不用担心安全问题了

在非对称加密阶段

当服务器给浏览器发送证书,由于服务端证书校验依赖于认证中心和私钥,因此是安全的

当浏览器给服务器发送数据时,由于随机数R的解密依赖于私钥,因此也是安全的

相关文章:

  • python第五次作业
  • 计算机组成原理·海明编码及其实验
  • 嵌入式开发—C++使用websocketpp 创建WebSocket服务器,并向浏览器发送图片
  • springboot从2.7.2 升级到 3.3.0
  • Golang:使用embed引入静态文件
  • 【Uniapp微信小程序】自定义水印相机、微信小程序地点打卡相机
  • Vue CLI:Vue CLI是一个强大的工具,可以帮助开发者快速地创建和管理Vue项目。我们可以讨论它的一些核心特性,比如热重载、懒加载等
  • 【云原生】kubernetes中pod的生命周期、探测钩子的实战应用案例解析
  • C++入门5——C/C++动态内存管理(new与delete)
  • 使用 C++ 在当前进程中获取指定模块的基址
  • HackTheBox-Machines--Sense
  • 标题:Go语言中的YAML魔法:轻松配置你的环境
  • Python打印当前目录下,所有文件名的首字母
  • Centos7安装Docker和DockerCompose
  • DynamiCrafter ComfyUI 教程 | 对图片转视频的效果进行精细化控制
  • [笔记] php常见简单功能及函数
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 07.Android之多媒体问题
  • es6(二):字符串的扩展
  • Facebook AccountKit 接入的坑点
  • Java,console输出实时的转向GUI textbox
  • java正则表式的使用
  • laravel 用artisan创建自己的模板
  • linux安装openssl、swoole等扩展的具体步骤
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Vue小说阅读器(仿追书神器)
  • 翻译--Thinking in React
  • 聚簇索引和非聚簇索引
  • 跨域
  • 浏览器缓存机制分析
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 用element的upload组件实现多图片上传和压缩
  • 最近的计划
  • Nginx实现动静分离
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​批处理文件中的errorlevel用法
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • # C++之functional库用法整理
  • # Redis 入门到精通(一)数据类型(4)
  • #Linux(帮助手册)
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • ${factoryList }后面有空格不影响
  • (42)STM32——LCD显示屏实验笔记
  • (C++哈希表01)
  • (Python) SOAP Web Service (HTTP POST)
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (十一)手动添加用户和文件的特殊权限
  • (一)、python程序--模拟电脑鼠走迷宫
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (原)本想说脏话,奈何已放下
  • (转)Linux下编译安装log4cxx