浅谈 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.rhkb.cn/news/317572.html

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

相关文章

第八篇:隔离即力量:Python虚拟环境的终极指南

隔离即力量:Python虚拟环境的终极指南 1 引言 在编程的多元宇宙中,Python语言犹如一颗闪耀的星辰,其魅力不仅仅在于简洁的语法,更在于其庞大而繁荣的生态系统。然而,随着应用的增长和复杂性的提升,开发者们…

『大模型笔记』Code Example: Function Calling with ChatGPT

Code Example: Function Calling with ChatGPT 文章目录 一. Code Example: Function Calling with ChatGPT二. 参考文献一. Code Example: Function Calling with ChatGPT from openai import OpenAI from dotenv import load_dotenv import json# --------------------------…

虚拟机安装与配置win7

一、安装镜像 Windows7 64位 ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/ 建议迅雷下载 二、VMware 安装win7 1.新创自定义虚拟机 2.默认即可 3.iso文件我们自己下载,选择一个空的磁盘 4.…

基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 遗传算法(GA)原理 4.2 BP神经网络原理 4.3 遗传优化BP神经网络结合应用 4.4 遗传算法简要改进 5.完整程序 1.程序功能描述 基于改进遗传优化的BP神经网络金融…

键盘更新计划

作为 IT 搬砖人,一直都认为键盘没有什么太大关系。 每次都是公司发什么用什么。 但随着用几年后,发现现在的键盘经常出问题,比如说调节音量的时候通常莫名其妙的卡死,要不就是最大音量要不就是最小音量。 按键 M 不知道什么原因…

python 怎么调用R

如何在python中调用R?这其中包括了如何调用R的对象(函数和包),R和python的对象如何互相转换,以及如何调用R的脚本(外界参数的输入)。python提供了一个模块rpy2,可以较好地完成这项工…

Leetcode 145:二叉树的后序遍历(迭代法)

给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 思路: 迭代法的思路是,使用栈,一层一层的将树节点遍历入栈。 比如下面这个树,使用迭代法,1)第一层,让根节点入栈。2&a…

kubectl_入门_Pod控制器

Pod控制器 在k8s中,按照pod的创建方式可以将其分为两类 自主式pod:k8s直接创建出来的pod,这种pod删除后就没有了,也不会重建控制器创建的pod:通过控制器创建的pod,这种pod删除了之后还会自动重建 1. 什么…

图像处理的一些操作(2)

图像处理 9. 转换类型9.1转换成浮点数类型9.2转换成无符号字节类型 10.颜色空间转换10.1RGB转GRAY10.2RGB转HSV10.3RGB转LAB10.4HSV转RGB10.5LAB转RGB10.6 convert_colorspace函数进行颜色转换 11.标签化处理图像11.1导入模块11.2加载图片11.3RGB图像转灰度图像11.4遍历图像11.…

WSL2-Ubuntu使用Conda配置百度飞浆paddlepaddle虚拟环境

0x00 缘起 本文将介绍在WSL2-Ubuntu系统中,使用Conda配置百度飞浆paddlepaddle虚拟环境中所出现的各种问题以及解决方法,最终运行"run_check()"通过测试。 在WSL2中配置paddlepaddle不像配置Pytorch那样顺滑,会出现各种问题(如:库的文件缺失、不知道如何匹配C…

nginx下载安装配置(含ssl)

下载安装环节 wget https://nginx.org/download/nginx-1.24.0.tar.gz tar -zxvf xxx.tar.gz yum -y install pcre-devel openssl openssl-devel ./configure --prefix/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream make & make i…

APScheduler定时器使用:django中使用apscheduler,使用mysql做存储后端

一、基本环境 python版本:3.8.5 APScheduler3.10.4 Django3.2.7 djangorestframework3.15.1 SQLAlchemy2.0.29 PyMySQL1.1.0二、django基本设置 2.1、新增一个app 该app用来写apscheduler相关的代码 python manage.py startapp gs_scheduler 2.2、修改配置文件s…

8. Django 表单与模型

8. 表单与模型 表单是搜集用户数据信息的各种表单元素的集合, 其作用是实现网页上的数据交互, 比如用户在网站输入数据信息, 然后提交到网站服务器端进行处理(如数据录入和用户登录注册等).网页表单是Web开发的一项基本功能, Django的表单功能由Form类实现, 主要分为两种: dj…

翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习三

合集 ChatGPT 通过图形化的方式来理解 Transformer 架构 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习二翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深…

GoLang Gin实际使用

所有代码同步到Admin/gitDemo - Gitee.comhttps://gitee.com/mec-deployment-team_0/git-demo/tree/dev/ 1.创建Gin框架 一般设计一个常规的web项目,都需要以下几个模块 runApp 主函数,运行整个项目routes 路由控制,管理跳转以及路由分组co…

微软如何打造数字零售力航母系列科普06 - 如何使用微软的Copilot人工智能

如何使用微软的Copilot人工智能? Copilot和ChatGPT有很多相似之处,但微软的聊天机器人本身就有一定的优势。以下是如何对其进行旋转,并查看其最引人注目的功能。 ​​​​​​​ (资料来源:Lance Whitney/微软&…

ZooKeeper 搭建详细步骤之一(单机模式)

ZooKeeper 搭建详细步骤之三(真集群) ZooKeeper 搭建详细步骤之二(伪集群模式) ZooKeeper 搭建详细步骤之一(单机模式) ZooKeeper 及相关概念简介 搭建模式简述 ZooKeeper 的搭建模式包括单机模式、集群模…

微软如何打造数字零售力航母系列科普05 - Azure中计算机视觉的视觉指南

Azure中计算机视觉的视觉指南 什么是计算机视觉?如何使用Microsoft Azure将计算机视觉功能集成到应用程序和工作流中? 作者:Nitya Narasimhan 编辑:数字化营销工兵 •11分钟阅读 什么是计算机视觉?如何使用Microso…

开发一个语音聊天社交app小程序H5需要多少钱?

社交,即时通讯APP系统。如何开发一个社交App||开发一个即时通信应用是一项复杂而充满挑战的任务,需要考虑多个技术、开发时间和功能方面的因素。以下是一个概要,描述了从技术、开发时间和功能角度如何开发这样的应用: 1. 技术要点…

C++11 设计模式5. 原型模式

什么是原型模式? 原型模式⼀种创建型设计模式,该模式的核⼼思想是基于现有的对象创建新的对象,⽽不是从头开始创建。在原型模式中,通常有⼀个原型对象,它被⽤作创建新对象的模板。新对象通过复制原型对象的属性和状态来…