浅谈 HTTPS

文章目录

  • HTTPS 简介
  • HTTPS 特点
  • 与 HTTP 的区别
  • HTTPS 工作流程
    • 1. 服务端生成密钥对
    • 2. 服务端申请数字证书
    • 3. 服务端发送数字证书
    • 4. 客户端验证数字证书
    • 5. 客户端解析证书内容
    • 6. 客户端传送加密信息
    • 7. 服务端解密信息
    • 8. 双方协商生成会话密钥并交换
    • 9. 使用会话密钥进行通信
  • 总结

浅谈 HTTP

HTTPS 简介

HTTPS (Hypertext Transfer Protocol Secure) 是一种安全的通信协议,以安全为目标的HTTP通道,简单讲是HTTP的安全版

HTTPS 通过在 HTTP 协议的基础上添加 SSL/TLS 来提供加密通信和身份验证,HTTPS的安全基础是 SSL/TLS。

这意味着,当使用 HTTPS 访问一个网站时,与该网站之间的所有通信都是加密的,从而保护数据免受中间人攻击和其他形式的网络攻击。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

  • SSL:
    HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。

  • TLS:
    它是 SSL (Secure Sockets Layer) 的继任者,因为 SSL 在过去的几个版本中存在已知的安全漏洞,所以 SSL 3.0 之后的版本被重新命名为 TLS,并且后续的改进和发展都在 TLS 的名下进行。

在这里插入图片描述

HTTPS 的作用:

  • 建立一个信息安全通道,来保证数据传输的安全;
  • 确认网站的真实性。

HTTPS 特点

  1. 安全性:

    HTTPS在HTTP协议的基础上加入了安全层(SSL/TLS),对数据进行加密传输

    保护了数据在传输过程中的安全,防止被第三方截获和窃取(Cookie都会通过加密的方式传输)

    HTTPS连接在数据传输过程中始终保持加密状态,即使连接被截断,也不会影响数据的加密状态。

  2. 可信性:

    HTTPS需要使用CA(证书颁发机构)颁发的证书来进行加密和解密操作,来验证服务端的身份

    客户端在与服务端建立连接时会验证证书的真实性和合法性,确保通信双方的身份可信(防止了中间人攻击)

    使用HTTPS协议可以提升用户对网站的信任度

  3. 完整性:

    HTTPS协议使用MAC(消息认证码)来确保数据的完整性。


与 HTTP 的区别

  • HTTP 是明文传输,HTTPS 通过 SSL/TLS 进行了加密

    HTTPS连接在数据传输过程中始终保持加密状态,即使连接被截断,也不会影响数据的加密状态。
    而HTTP的连接是明文的,一旦被截断,数据就可能被窃取或篡改。

  • HTTP 的端口号是 80,HTTPS 是 443

  • HTTPS 需要到 CA 申请证书,一般免费证书很少,需要交费

  • HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。


HTTPS 工作流程

1. 服务端生成密钥对

在HTTPS通信中,服务端首先生成一对密钥:私钥和公钥

  • 私钥:

    私钥是密钥对所有者(服务端)持有的,必须严格保密,不可公布给任何人。

    私钥用于解密由公钥加密的数据,以及用于对需要传输的文本的摘要进行加密,生成签名。

  • 公钥:

    公钥是密钥对持有者(服务端)公布给他人的,用于给数据加密。

    公钥加密的数据只能使用对应的私钥进行解密。

    在签名验证过程中,接收方会使用公钥对签名进行解密,获取文本的摘要,然后与自己计算得到的摘要进行对比,以验证数据的完整性和发送者的身份。

私钥可以看成钥匙,只能自己拿着,可以解开对应的锁头

公钥可以看成锁头,给别人加密重要数据的,只有对应的钥匙才能打开

.

2. 服务端申请数字证书

采用HTTPS协议的服务端必须要有一套数字证书,可以向证书颁发机构CA提出购买申请:

常见的证书颁发机构包括Symantec、GeoTrust、Thawte等。

  1. 提交申请:

    准备申请材料 => 线上购买 => 缴纳费用

    服务端向CA提交数字证书的申请(申请包括:该实体的公钥以及相关的身份信息)

  2. 验证申请:

    证书颁发机构将对服务端的申请进行审核,验证这个申请的真实性(如:确认申请者是否真的拥有所提交的公钥)

    可能还需要服务端配合完成实名认证、域名验证等环节。

  3. 颁发证书:

    验证通过后证书颁发机构将为服务端颁发CA数字证书

    证书通常以电子文件的形式提供,服务端需要根据颁发机构的指引下载、安装和使用证书。

数字证书包含:

  1. 申请者的公钥:

    用于在HTTPS通信中加密数据,确保数据只能被具有相应私钥的服务端解密

  2. 数字签名:

    证书颁发机构会使用自己的私钥对证书的内容(包括申请者的公钥和一些其他信息)进行加密,生成一个数字签名(哈希值)

    这个签名是证书颁发机构对证书内容的认可,确保证书没有被篡改

  3. 其他信息:

    申请者的身份信息(如域名)

    证书信息:包括证书的有效期、证书持有者的名称(域名)、证书链等信息

HTTPS的数字证书并不直接包含私钥,但它确实与私钥紧密相关。

.

3. 服务端发送数字证书

服务端收到数字证书后,会在HTTPS通信的TLS/SSL握手过程中主动向客户端发送数字证书

.

4. 客户端验证数字证书

  1. 获取证书链:

    客户端收到数字证书后就会从中获取证书链

    证书链:数字证书中包含整个证书链,证书链是由一系列证书构成的链条,从服务端证书开始到中间证书,直到根证书结束。
    .

  2. 解析证书链:

    客户端解析证书链中的每个证书,获取证书的各种属性(颁发者、有效期、域名等)
    .

  3. 检查证书域名:

    在解析证书链后,客户端会检查证书中的域名是否与请求的域名一致

    这是为了防止“中间人攻击(MITM)”,即攻击者拦截并篡改通信内容,或者冒充服务端与客户端进行通信,确保客户端与预期的服务端进行通信。
    .

  4. 验证证书的有效性:

    在确认域名匹配后,客户端会验证证书的有效性(是否已过期、被吊销)

    • 检查证书是否在有效期内(即证书的开始时间和结束时间)
    • 检查证书是否已被吊销(通过证书吊销列表CRL或在线证书状态协议OCSP)。
      .
  5. 验证证书链:

    接下来,客户端会验证证书链的完整性(使用公钥来验证证书的数字签名)

    客户端会按照顺序验证证书链中的每个证书,从服务端证书开始,使用颁发者的公钥来验证证书的数字签名,并重复此过程,直到到达受信任的根证书。

    如果任何一个证书的签名验证失败,那么整个证书链将被视为无效,客户端将不会信任服务端证书,从而阻止与服务端的安全通信。

    以确保证书是由受信任的证书颁发机构签发的,并且整个信任链是完整和未被篡改的。
    .

  6. 验证根证书:

    最后,客户端会验证服务端证书的合法性(客户端在预置的信任机构列表中查找根证书,找到即合法)

    • 根证书在列表中:那么客户端就会信任这个根证书,并认为整个证书链是有效的。
    • 根证书不在列表中:那么证书链将被视为无效。

.

5. 客户端解析证书内容

数字证书被验证为有效后,客户端开始解析数字证书中的内容

数字证书中包含了许多关于服务端的信息:如服务端的公钥、证书的有效期、颁发者信息等。

.

6. 客户端传送加密信息

当客户端解析数字证书后,就会向服务端传送加密信息

这个过程通常包括以下几个步骤:

  1. 生成会话密钥:

    客户端会生成一个随机的会话密钥(通常是一个对称密钥)

    这个密钥将用于后续的加密和解密操作

  2. 加密会话密钥:

    客户端使用服务端证书中的公钥对生成的会话密钥进行加密

    这就像使用一个锁(公钥)将密钥(会话密钥)锁住,只有持有相应钥匙(私钥)的人才能打开这个锁

  3. 传送加密信息:

    客户端将加密后的会话密钥(以及可能的其他加密参数或信息)通过HTTPS连接发送给服务端

    这个过程中,由于会话密钥已经被服务端的公钥加密,因此即使数据在传输过程中被截获,攻击者也无法直接获取到会话密钥的内容

.

7. 服务端解密信息

当服务端接收到客户端发送的加密信息后,服务端使用自己的私钥来解密会话密钥

这就像服务端使用自己的钥匙打开了客户端锁上的锁,从而获取到了会话密钥。

这样,双方就都拥有了相同的会话密钥,而第三方无法知道这个密钥。

.

8. 双方协商生成会话密钥并交换

上面的客户端传送加密信息服务端解密信息就是 双方协商生成会话密钥并交换 的过程

.

9. 使用会话密钥进行通信

一旦会话密钥被成功协商和交换,服务端和客户端双方就可以使用这个会话密钥来对后续的HTTP请求和响应进行加密和解密了

具体来说,客户端会使用会话密钥来加密其发送给服务端的HTTP请求,而服务端则使用相同的会话密钥来解密这些请求。

同样地,服务端也会使用会话密钥来加密其发送给客户端的HTTP响应,而客户端则使用相同的会话密钥来解密这些响应。

这种加密方式通常被称为对称加密,因为它使用同一个密钥(会话密钥)来进行加密和解密操作。确保了通信过程中数据的安全性和机密性。因为只有拥有会话密钥的双方才能对消息进行正确的加密和解密,而第三方无法知道这个密钥,因此无法窃取或篡改通信内容。


总结

  1. 服务端首先生成一对密钥:私钥和公钥

  2. 服务端向证书颁发机构提交数字证书的申请(申请包括:该实体的公钥以及相关的身份信息)

  3. 证书颁发机构验证申请的真实性(如:确认申请者是否真的拥有所提交的公钥)

  4. 验证通过后证书颁发机构将为服务端颁发CA数字证书

  5. 服务端主动向客户端发送数字证书

  6. 客户端收到数字证书后就会从中获取证书链

  7. 客户端解析证书链中的每个证书,获取证书的各种属性(颁发者、有效期、域名等)

  8. 客户端检查证书中的域名是否与请求的域名一致

  9. 客户端验证证书的有效性(是否已过期、被吊销)

  10. 客户端验证证书链的完整性(使用公钥来验证证书的数字签名)

  11. 客户端验证服务器证书的合法性(在预置的信任机构列表中查找根证书,找到即合法)

  12. 客户端解析数字证书中的内容(得到服务器的公钥、证书的有效期等)

  13. 客户端会生成一个随机的会话密钥

  14. 客户端使用服务器证书中的公钥对生成的会话密钥进行加密

  15. 客户端将加密后的会话密钥发送给服务器

  16. 服务端使用自己的私钥来解密会话密钥

  17. 服务端和客户端双方协商生产会话密钥并交换

  18. 服务端和客户端双方就可以使用这个会话密钥来对后续的HTTP请求和响应进行加密和解密了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/5699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java】对象的实例化过程

0、前情 对于经常写代码的同学有没有思考这样一个问题:为什么成员变量有默认值?为什么局部变量必须手动赋值? 先不考虑变量类型,如果没有默认值会怎么样?变量存储的是内存地址对应的任意随机值,如果不对其…

Dom获取属性操作

目录 1. 基本认知 1.1 目的和内容 1.2 什么是DOM 1.3 DOM对象 1.4 DOM树 2. 获取DOM元素对象 2.1 选择匹配到的第一个元素 2.2 选择匹配到的多个元素 2.3 其他获取DOM元素方法 3. 操作元素内容 3.1 元素对象.innerText 属性 3.2 元素对象.innerHTML 属性 4. 操作元…

缓存分享(1)——Guava Cache原理及最佳实践

Guava Cache原理及最佳实践 1. Guava Cache是什么1.1 简介1.2 核心功能1.3 适用场景 2. Guava Cache的使用2.1 创建LoadingCache缓存2.2 创建CallableCache缓存 缓存的种类有很多,需要根据不同的应用场景来选择不同的cache,比如分布式缓存如redis、memca…

设计模式之装饰者模式DecoratorPattern(四)

一、概述 装饰者模式(Decorator Pattern)是一种用于动态地给一个对象添加一些额外的职责的设计模式。就增加功能来说,装饰者模式相比生成子类更为灵活。装饰者模式是一种对象结构型模式。 装饰者模式可以在不改变一个对象本身功能的基础上增…

linux dma的使用

设备树配置 驱动代码 static void bcm2835_dma_init(struct spi_master *master, struct device *dev) { struct dma_slave_config slave_config; const __be32 *addr; dma_addr_t dma_reg_base; int ret; /* base address in dma-space */ addr of_get_address(master->de…

基于 React 的图形验证码插件

react-captcha-code NPM 地址 : react-captcha-code - npm npm install react-captcha-code --save 如下我自己的封装: import Captcha from "react-captcha-code";type CaptchaType {captchaChange: (captchaInfo: string) > void;code…

目前全球各类遥感卫星详细介绍

一、高分一号 高分一号(GF-1)是中国高分辨率对地观测系统重大专项(简称高分专项)的第一颗卫星。“高分专项”于2010年5月全面启动,计划到2020年建成中国自主的陆地、大气和海洋观测系统。 高分一号(GF-1&…

React的useEffect

概念:useEffect是一个React Hook函数,组件渲染之后执行的函数 参数1是一个函数,可以把它叫做副作用函数,在函数内部可以放置要执行的操作参数2是一个数组(可选参),在数组里放置依赖项&#x…

Linux系统中搭建Mosquitto MQTT服务并实现远程访问本地消息代理进行通信

文章目录 1. Linux 搭建 Mosquitto2. Linux 安装Cpolar3. 创建MQTT服务公网连接地址4. 客户端远程连接MQTT服务5. 代码调用MQTT服务6. 固定连接TCP公网地址7. 固定地址连接测试 今天和大家分享一下如何在Linux系统中搭建Mosquitto MQTT协议消息服务端,并结合Cpolar内网穿透工具…

使用 Python 和 OpenCV 进行实时目标检测的详解

使用到的模型文件我已经上传了,但是不知道能否通过审核,无法通过审核的话,就只能 靠大家自己发挥实力了,^_^ 目录 简介 代码介绍 代码拆解讲解 1.首先,让我们导入需要用到的库: 2.然后,设…

【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)

🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔记 🌈C笔记专栏: C笔记 🌈喜欢的诗句:无人扶我青云志 我自踏雪至山巅 文章目录 一、简单介绍Sizeof和Strlen1.1 Sizeof1.2 Strlen函数1.3 Sie…

快速建站介绍

随着在线业务和电子商务的规模不断扩大,初创公司、个人网站和小型企业都需要快速地搭建自己的网站,以便更好地展示自己、推广产品和服务,并实现在线交易。快速建站已成为在线业务发展的一种主流方式,因为它能够快速地创建一个响应…

uniapp 自定义 App启动图

由于uniapp默认的启动界面太过普通 所以需要自定义个启动图 普通的图片不可以过不了苹果的审核 所以使用storyboard启动图 生成 storyboard 的网站:初雪云-提供一站式App上传发布解决方案

Java学习第02天-类型转换、运算符

目录 类型转换 自动类型转换 表达式的自动类型转换 强制类型转换 运算符 基本运算符 案例解答 连接字符串 自增自减运算符 面试习题 赋值运算符 比较运算符 逻辑运算符 基本逻辑运算符 短路逻辑运算符 三元运算符 基础知识 拓展案例 运算符优先级 读取用户…

UNeXt: a Low-Dose CT denoising UNet model with the modified ConvNeXt block

UNeXt:采用改进的ConvNeXt块的低剂量CT去噪UNet模型 论文链接:https://ieeexplore.ieee.org/document/10095645 项目链接:没找到 Abstract 近几十年来,临床医生广泛使用计算机断层扫描(CT)进行医学诊断。医疗辐射有潜在危险&am…

77、贪心-买卖股票的最佳时机

思路 具体会导致全局最优,这里就可以使用贪心算法。方式如下: 遍历每一位元素找出当前元素最佳卖出是收益是多少。然后依次获取最大值,就是全局最大值。 这里可以做一个辅助数组:右侧最大数组,求右侧最大数组就要从…

ADS1.2中的代码debug的时候不出来代码的解决办法

我总觉得ADS1.2这个软件挺奇怪的,一阵一阵的,我遇到了很多奇怪的问题,这里记录一下吧。 1、新建文件的时候,没法选择这个add to project 解决办法:如果没有已存在的.mcp文件,就先新建project,然…

项目运行到手机端

运行到真机 手机和点到连在同一个wifi网络下面点击hbuiler上面的预览得到一个,network的网址这个时候去在手机访问,那么就可以访问网页了 跨域处理 这个时候可能会访问存在跨域问题 将uniapp的H5版本运行到真机进行调试,主要涉及到跨域问题…

java-Spring-mvc-(请求和响应)

目录 📌HTTP协议 超文本传输协议 请求 Request 响应 Response 🎨请求方法 GET请求 POST请求 📌HTTP协议 超文本传输协议 HTTP协议是浏览器与服务器通讯的应用层协议,规定了浏览器与服务器之间的交互规则以及交互数据的格式…

【机器学习】HQ-Edit引领图像编辑新潮流

科技新纪元:HQ-Edit引领图像编辑新潮流 一、HQ-Edit的诞生:一场技术的革命二、技术实现与优势:强大的编辑能力和精准的匹配三、应用前景与实例展示:InstructPix2Pix的突破 在数字化时代,图像编辑技术正以前所未有的速度…