【Linux】【网络】应用层协议:HTTPS

2023-11-16

HTTP

HTTPS

HTTP(HyperText Transfer Protocol):

  • 是客户端浏览器或其他程序与 Web 服务器之间的应用层通信协议。

HTTPS(HyperText Transfer Protocol over Secure Socket Layer)

  • 可以理解为 HTTP + SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。

SSL(Secure Socket Layer,安全套接字层)

  • 1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

TLS(Transport Layer Security,传输层安全)

  • 其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999 年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0 和 TLS1.0 由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。

1. 加密方式

对称加密:

  • 有流式、分组两种,加密和解密都是使用的同一个密钥。
    例如:DES、AES-GCM、ChaCha20-Poly1305等

  • 特点:算法公开,计算量小、加密速度快、加密效率高

非对称加密:公钥(全网公开),私钥(只能自己私有)

  • 用 公钥加密,只能用 私钥解密
    用 私钥加密,只能用 公钥解密
    例如:RSA、DSA、ECDSA、 DH、ECDHE

  • 特点:非对称加密算法性能较低,但是安全性超强,由于其加密特性,非对称加密算法能加密的数据长度也是有限的。


2. 数据摘要 \ 数据指纹

  • 数字指纹(数据摘要),其基本原理是利用单向散列函数(Hash 函数)对信息进行运算,生成一串 固定长度 的数字摘要。数字指纹并不是一种加密机制,但可以用来判断数据有没有被窜改。

    摘要常见算法:MD5、SHA1、SHA256、SHA512等
    

    算法把无限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率非常低)

  • 摘要特征:和加密算法的区别是,摘要严格意义不是加密,因为没有解密,只不过从摘要很难反推原信息,通常用来进行数据对比


3. 数字签名

摘要经过加密,就得到数字签名,可以证明信息没有被修改过。摘要一般都会加密后再和信息一起发送,以保证这个摘要不被修改。

【信息】 --hash--> 【摘要】 -- 加密--> 【签名】

HTTPS 的 工作过程

在这里插入图片描述

HTTPS 工作过程中的密钥

HTTPS 工作过程中涉及到的密钥有三组。

第一组(非对称加密): 用于校验证书是否被篡改。

  • 服务器持有私钥(私钥在形成 CSR 文件与申请证书时获得)
  • 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些,同时持有对应的公钥)
  • 服务器在客户端请求是,返回携带签名的证书。客户端通过这个公钥进行证书验证,保证证书的合法性,进一步保证证书中携带的服务端公钥权威性。

第二组(非对称加密): 用于协商生成对称加密的密钥。

  • 客户端用收到的 CA 证书中的公钥(是可被信任的)给随机生成的对称加密的密钥加密,传输给服务器,服务器通过私钥解密获取到对称加密密钥。

第三组(对称加密):客户端和服务器后续传输的数据都通过这个对称密钥加密解密。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Linux】【网络】应用层协议:HTTPS 的相关文章

  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 如何在Linux内核源代码中打印IP地址或MAC地址

    我必须通过修改 Linux 内核源代码来稍微改变 TCP 拥塞控制算法 但为了检查结果是否正确 我需要记录 MAC 或 IP 地址信息 我使用 PRINTK 函数来打印内核消息 但我感觉很难打印出主机的MAC IP地址 printk pM
  • Linux 内核标识符中前导和尾随下划线的含义是什么?

    我不断遇到一些小约定 比如 KERNEL Are the 在这种情况下 是内核开发人员使用的命名约定 还是以这种方式命名宏的语法特定原因 整个代码中有很多这样的例子 例如 某些函数和变量以 甚至 这有什么具体原因吗 它似乎被广泛使用 我只需
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • 从 HTTPS 重定向到 HTTP 的安全问题?

    我在一些博客上读过 抱歉没有提及参考资料 但我找不到了 如果您将用户从 https 页面重定向到 http 页面 您将失去保护网站安全的所有工作 那么 有人可以向我解释一下在以下情况下我是对还是错 在登录页面上使用 https 然后使用 h
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少
  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获
  • 应用程序传输安全已禁用,但仍然出现 SSL 握手错误

    我在通过 HTTPS SSL 连接到 API 时遇到问题 我已经使用下面的字典完全禁用了应用程序传输安全性 ATS 尽管 SSL 证书通过了 NSCURL 的所有测试
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • 如何确保应用程序在 Linux 上持续运行

    我试图确保脚本在开发服务器上保持运行 它会整理统计数据并提供网络服务 因此它应该会持续存在 但一天中有几次 它会因未知原因而消失 当我们注意到时 我们只需再次启动它 但这很麻烦 并且某些用户没有权限 或专有技术 来启动它 作为一名程序员 我
  • CoAP数据包的大小是多少?

    我是这项技术的新手 有人可以帮助我了解一些疑问吗 Q 1 CoAP数据包的大小是多少 我知道有 4 字节固定标头 但是包括标头 选项和负载在内的最大大小限制是多少 Q 2 有像MQTT那样的Keep Alive的概念吗 它在UDP上工作 它
  • Gtk-ERROR **:检测到 GTK+ 2.x 符号

    我正在使用 gcc 编译我的 c 应用程序 并使用以下标志 gcc evis c pkg config cflags libs gtk 2 0 libs clutter gtk 1 0 libs gthread 2 0 Wall o evi
  • 无法对 Elastic Beanstalk AWS 上运行 ASP.NET 的网站强制使用 HTTPS(使用经典负载均衡器)

    这样我终于能够成功创建一个https网站了 它只是运行模板 ASP NET Web 项目 我有一个证书 并且该证书已添加到 AWS 中的 ELB 弹性负载均衡器 经典 中 我的环境可以浏览到https www mvc cloudy skie
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 将非 www 和非 http 重定向到 https

    昨天我在服务器上安装了 SSL 从那以后我无法访问某些页面 www example com amsterdam shoes example com 阿姆斯特丹 两者都不会重定向到 https 甚至不会重定向到 http www exampl
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost

随机推荐

  • vim进阶

    首先晒一张我的vim截图 基本IDE有的功能都能实现了 虽然在日常工作里还是IDE用的多 但是作为一个开发者 少不了折腾的心 vim 作为与emacs齐名的编辑器 无需更多溢美之词 由于学习曲线陡峭 但是学会之人 无不表示其方便 vim操作
  • Docker 安装 MySQL、Redis、Nginx

    222 1 Portainer 安装 docker可视化 2 Docker 安装MySQL 3 Docker安装Redis 4 Docker安装 Nginx 1 Portainer 安装 docker可视化 docker run d p 8
  • C++多线程(三)事件

    事件 解决两个线程通信问题 要注意死锁 g hEvent CreateEvent NULL FALSE FALSE NULL WaitForSingleObject g hEvent INFINITE ResetEvent g hEvent
  • ubuntu18-opencv3.4.6移植到aarch64

    一 前提条件 需先安装好arm64相关的交叉编译器 安装好cmake gui 下载并解压opencv3 4 6 下载ippicv 2019 lnx intel64 general 20180723 tgz 二 配置cmake 进入openc
  • Unity初学者学习路线与建议

    Unity初学者学习路线与建议 目录 Unity初学者学习路线与建议 一 前言 二 我的学习建议 三 学习要点 一 前言 Holle大家好 先自我介绍一下 我现在大二 专业是数字媒体技术 方向是游戏制作 学的是Unity 和我同专业的另一个
  • Ubuntu 16.04安装MinGW32

    直接使用命令 sudo apt get install mingw32 会报错 Unable to locate package mingw32 解决办法如下 sudo gedit etc apt sources list 在sources
  • ModBus-RTU详解

    Modbus 一个工业上常用的通讯协议 一种通讯约定 Modbus协议包括RTU ASCII TCP 其中MODBUS RTU最常用 比较简单 在单片机上很容易实现 虽然RTU比较简单 但是看协议资料 手册说得太专业了 起初很多内容都很难理
  • Mysql中字符串正确的连接方法

    虽然SQL server和My sql的语句基本都一致 但是仍然存在一些小区别 就如字符串的连接来说 SQL server中的字符串连接是使用 来连接 不带引号sql server是做加法运算 而my sql中无论是带引号和不带引号 它都将
  • 无缓存交换

    请编写一个函数 函数内不使用任何临时变量 直接交换两个数的值 给定一个int数组AB 其第零个元素和第一个元素为待交换的值 请返回交换后的数组 测试样例 1 2 返回 2 1 思路 使用异或 public int exchangeAB in
  • python3生成中文词云图

    usr bin python3 coding utf 8 coding utf 8 导入wordcloud模块 from wordcloud import WordCloud 中文分词库 pip install jieba import j
  • BMP to AVI 及其压缩的实现

    1 设计方案的产生 这个设计方案是物光院嵌入式系统试验室的基于CDMA技术的无线视频传输监控系统的设计的一部分 我简要说明此系统的原理 系统单片机部分主要模块由CDMA DSP与ARM处理器 FLASH ROM组成 此单片机用来获取监控所在
  • python+selenium 处理需要确定证书对话框

    场景如下 使用selenium 处理网页时 碰到了跳出证书的情况 如下图 所见 当使用get请求网页的时候 由于网页一直处于跳出状态 无法使用页面内容来进行操作 只能卡死在这一步 考虑到只需要在当前页面用鼠标点击或者键盘回车即可 但是sel
  • tomcat自带连接池dbcp配置以及优化说明

    转自 http www totcms com html 201602 29 20160229114145 htm 一个网站每天大概有20万的访问量 使用的tomcat自带dbcp连接池 一般网站访问很好 速度也很快 但是过一段时间后 总是报
  • VMware上pfsense开源防火墙的下载、安装、简单配置

    文章目录 1 pfsense概述 1 1 官方描述 1 2 个人描述 2 pfsense下载 2 1 官网下载 3 pfsense安装 3 1 官网手册 3 2 安装步骤 4 pfsense配置 4 1 默认账号密码 4 2 初始化配置 4
  • PyTorch学习笔记(三)PyTorch回归问题——分类问题

    PyTorch学习笔记 三 PyTorch回归问题 分类问题 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 一 pandas是什么 示例 pandas 是基于NumPy 的一种工具 该工具是为了
  • 性能测试的基本流程

    1 性能测试需求分析 项目经理 业务 架构专家 产品经理 高级性能测试工程师 开发经理 2 性能测试计划 高级性能测试工程师 项目经理 架构师 产品经理 3 性能测试准备 性能测试工程师 外部支持 网络工程师 系统管理员 测试服务器和被测试
  • 记录——企业课Python-科学计算(只学了Numpy、pandas和matplotlib.pyplot中的一些基础)

    一学期一次的企业课 大好的周末在机房度过 三个周日一个周六 感觉听的讲起来还不如自己看CSDN 顺带吐槽一下这个老师的评分 自己敲了一天整天最后得分82 同学复制粘贴过去87 更有甚者32学时课程结束 复制过来的代码连环境都没有都无法运行居
  • 微云存储空间多大_qq微云内存多大

    QQ微云容量最大多少 根据QQ微云官方的说法 可以达到100G 微云网盘怎么扩容 扩容方法可分为2种 一是登录QQ微云iPad版等获得额外的8G空间 二是参加每天签到活动获得额外的容量 下面就由学习啦小编为大家整理的相关信息 供大家参考 一
  • cmake构建多目录项目

    1 项目工程文件目录结构 2 源码 2 1 hello include hello h ifndef HELLOWORLD HELLO H define HELLOWORLD HELLO H extern void hello void e
  • 【Linux】【网络】应用层协议:HTTPS

    文章目录 HTTPS 1 加密方式 2 数据摘要 数据指纹 3 数字签名 HTTPS 的 工作过程 HTTPS 工作过程中的密钥 HTTP HTTPS HTTP HyperText Transfer Protocol 是客户端浏览器或其他程