Http与Https 比较

news/2024/11/29 21:19:18/

目录

1、HTTP(HyperText Transfer Protocol:超文本传输协议)

2、HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)

3、HTTP 与 HTTPS 区别

4、HTTPS 的工作原理


1、HTTP(HyperText Transfer Protocol:超文本传输协议)

  • 是一种用于分布式、协作式和超媒体信息系统的应用层协议。
  • 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。

(1)HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。

(2)HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

(3)HTTP 的交互流程: 一般分为四个步骤(一次完整的请求):

 步骤一:  客户端和服务器端建立连接步骤二:客户端发送请求数据到服务器端(HTTP 协议)步骤三:服务器端接收到请求后,进行处理,然后将 处理结果响应客户端(HTTP 协议)步骤四:关闭客户端和服务器端的连接(HTTP1.1 后不会立即关闭)

        具体的创建流程,可以参考《HTTP通讯相关知识》

2、HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)

  • 是一种透过计算机网络进行安全通信的传输协议。
  • HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。
  • HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

HTTPS 默认工作在 TCP 协议443端口,它的工作流程一般如以下方式:

1、TCP 三次同步握手
2、客户端验证服务器数字证书
3、DH 算法协商对称加密算法的密钥、hash 算法的密钥
4、SSL 安全加密隧道协商完成
5、网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。

3、HTTP 与 HTTPS 区别

  • HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
  • 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
  • HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包
  • http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
  • HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

4、HTTPS 的工作原理

我们都知道 HTTPS 能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用 HTTPS 协议。

1)客户端发起 HTTPS 请求

这个没什么好说的,就是用户在浏览器里输入一个 https 网址,然后连接到 server 的 443 端口。

2)服务端的配置

采用 HTTPS 协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl 就是个不错的选择,有 1 年的免费服务)。

这套证书其实就是一对公钥和私钥,如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

3)传送证书

这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

4)客户端解析证书

这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。

如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

5)传送加密信息

这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

6)服务端解密信息

服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

7)传输加密后的信息

这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

8)客户端解密信息

客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。


http://www.ppmy.cn/news/72012.html

相关文章

rem和em的区别和使用场景,以及如何在实际开发中灵活运用它们

在前端开发中,我们经常使用rem和em作为长度单位来设置页面元素的大小。虽然它们都可以用于实现响应式布局,但是它们之间存在着一些区别。本文将深入探讨rem和em的区别和使用场景,以及如何在实际开发中灵活运用它们。 什么是rem rem是相对于…

Dynamics 365 自动化发布工具Spkl介绍

本篇主要是为了后面讲述CI/CD时用到的工具做一个说明,先奉上spkl的github地址,没听说过的可以去查看下,挺不错的工具。 我们主要用这个工具来部署WebResource, Plugin和Workflow Activities 以及后续的CI 首先从nuget上下载工具包&#xff0c…

今天面了个京东拿28K 出来的,让我见识到了测试界的天花板

今年的春招基本已经结束了,很多小伙伴收获不错,拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的软件测试面试题和八股文,为此咱这里也统一做一次大整理和大归类,这也算是划重点了。 俗话说得好&#…

python柱状图类VisualMapOpts方法说明

# 这是一个类,继承了 BasicOpts 类 class VisualMapOpts(BasicOpts): # 初始化函数,定义了一些参数及其默认值。其中包括 range_color、range_size、和 range_opacity 等参数 def __init__( self, is_show: bool True, # 是否…

node笔记_写文件(异步写入,同步写入,追加写入,流式写入)

文章目录 ⭐前言⭐写文件💖writeFile写入写一个txt文件 💖writeFileSync同步写入写一个txt文件 💖appendFile 追加写入追加写入一个txt 💖createWriteStream流式写入流式写入txt ⭐ 结束 ⭐前言 大家好,我是yma16&…

上海思翼信息技术有限公司【Java开发工程师】面经

文章目录 上海思翼信息技术有限公司【Java开发工程师】面经说一下能记起来的吧:一、填写个人资料表(两页)二、笔试题(30min 大约十五道题左右)三、一对一面试(大概30-40min)总结 如果这篇文章帮助到您了,请…

当电脑回收站图标不见后,这4种方法帮你快速恢复

我们都知道,在电脑上删除文件时,这些文件多数都会先停留在回收站中。当我们后悔删除这些文件时,往往可以通过回收站还原,可是有些小伙伴却发现自己的电脑回收站不见了,这无疑给我们的回收站文件恢复工作带来不便&#…

lambda、类

目录 1、lambda匿名函数 2、类 1、__init__() 2、继承 1、lambda匿名函数 语法 lambda arguments : expression 一个 lambda 函数,它把作为参数传入的数字加 10,然后打印结果 x lambda a : a 10print(x(5)) # 15 一个 lambda 函数&#x…