首页 > 其他分享 >关于HTTPS与HTTP的区别

关于HTTPS与HTTP的区别

时间:2023-06-29 23:44:55浏览次数:43  
标签:HTTP 区别 颁发 数字证书 HTTPS 加密 服务端 客户端

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。

HTTP主要存在以下缺点:

1、在通信的过程使用明文传输,一旦信息被截获,用户的隐私就会被泄漏;

2、不对通信方的身份进行验证,因而通信双方可能会被黑客冒充;

3、无法保证通信数据的完整性,黑客可能会篡改通信数据。

 

安全套接字(Secure Sockets Layer, SSL)协议用以保障在 Internet 上数据传输的安全,利用数据加密技术,可确保数据在网络上的传输过程中不会被截取和窃听。

SSL协议提供的安全通道有以下3个特性:

1、在通信的过程中使用密钥加密通信数据,即使信息被截获,用户的隐私也不会被泄漏;

2、服务器和客户都会被认证,客户的认证是可选的;

3、SSL协议会对传送的数据进行完整性检查,黑客无法篡改通信数据。

 

而HTTPS相当于HTTP+SSL协议:

因为在原有的结构中多了SSL这一层,所以HTTP首先需要使用SSL来建立连接。HTTP与HTTPS的区别如下图所示:

相比HTTP,HTTPS的加密过程要复杂很多,这里一共分成8个步骤:

1、客户端首先向服务端发送请求,连接到服务端到443端口,发送的信息包括客户端支持的加密算法;

2、服务端在接收信息之后,向客户端发送匹配好的协商加密算法(客户端提供算法的子集);

3、服务端向客户端发送数字证书,可以是权威机构所颁发的,也可以是自己制作的。该证书中包含“证书颁发机构、过期时间、服务器公钥、服务端域名信息”等内容;

4、客户端对证书进行解析,并验证数字证书是否有效,如果发现异常,就会弹出一个警告框,提示该数字证书存在问题。如果该数字证书验证通过,客户端就会生成一个随机数R;

5、客户端使用数字证书中的公钥对随机数R进行加密,然后发送给服务端;

6、服务端使用私钥对传输数据进行解密,得到随机数R;

7、客户端使用随机数R和协商加密算法加密一条消息发送给服务端,验证服务端是否能正常接收自客户端的消息;

8、服务端也通过随机数R和协商加密算法加密一条消息发送给客户端,如果客户端能够正常接收来自服务端端消息,则表明SSL层连接已经成功建立。

 

数字证书颁发机构的工作原理:

上面介绍的HTTPS的加密过程的8个步骤中,最关键的是第3个步骤中服务端发送的数字证书。这个数字证书有两种来源:

第一种是由服务端自行生成的,这种情况下并不能保证通信的安全(因为数字证书很容被调包);

第二种是由权威的证书颁发机构(Certificate Authority CA)所颁发的,这种情形下安全性才得到了真正的提示。

服务端如果想要获得数字证书,就需要向证书颁发机构申请。证书颁发机构生成一对公钥和私钥、一个服务端端数字证书,并使用私钥对数字证书进行加密,该私钥不是公开的。

证书颁发机构向服务器A颁发包含CA公钥的数字证书,并向客户端提供CA公钥。证书颁发机构的工作原理如下图所示:

这样一来,由于专门用来加密数字证书的私钥掌握在证书颁发机构手中,即使服务端向客户端发送的数字证书被黑客截获,他们也只能解读,无法篡改。因为篡改数字证书后, 用户就无法使用证书颁发机构提供的CA公钥对数字证书进行解密。黑客获得的数字证书中的CA公钥也只能用来加密,不能解密,这样他们也无法获悉服务端和客户端加密的信息。即使使用了数字证书机制,仍然可能会出现以下问题导致完全机制失效。

标签:HTTP,区别,颁发,数字证书,HTTPS,加密,服务端,客户端
From: https://www.cnblogs.com/n5you/p/17515494.html

相关文章

  • 网络IO模型:BIO、NIO、AIO的区别
    1.BIO,即BlockingIO,同步阻塞IO,最原始的实现方式,每个socket在进行IO请求时(发送数据或接收数据)都会阻塞线程,所以有多少个IO请求就需要多少个线程;这里同步和异步是一种逻辑概念,比如我调用某个接口是异步接口,即对方不会等处理完业务后告诉我业务处理结果,而是直接就返回了,需要我们后续......
  • kratos http原理
    概念kratos为了使http协议的逻辑代码和grpc的逻辑代码使用同一份,选择了基于protobuf的IDL文件使用proto插件生成辅助代码的方式。protochttp插件的地址为:https://github.com/go-kratos/kratos/tree/main/cmd/protoc-gen-go-http示例syntax="proto3";packagehelloworld;......
  • https://leetcode.cn/ 第9题 判断回文数
    #回文数121是;123不是#定义一个函数判断是否是回文数defget_Hui(num):#将整数num转字符串str_num=str(num)str_num_change=str_num[::-1]num2=int(str_num_change)#判断整数num和num2是否相等if(num2==num):print("是......
  • reeuqire与include的区别
    include和 require都能把另外一个文件包含到当前文件中,他们有什么区别?Include和 include_once又有什么区别? 二者区别只有一个,那就是对包含文件的需求程度,include就是包含,如果被包含的文件不存在的话,那么则会提示一个错误,但是程序会继续执行下去。 而require意思......
  • HTTP/3,它来了!
    首先,我们先来介绍一下HTTP/2,HTTP/2通过二进制传输、多路复用、Header压缩、ServerPush等特性大大地提升了HTTP/1.x的性能,但是由于HTTP/2是基于TCP协议实现的,TCP本身特性导致其必然存在一定的瓶颈及缺陷。HTTP/2缺陷:①Head-Of-Line Blocking(队头阻塞):HTTP/2多个请求都是......
  • 代理服务器之 squid、lvs、nginx、haproxy之间的区别
    代理服务器之squid、lvs、nginx、haproxy之间的区别代理服务可简单的分为正向代理和反向代理1、正向代理正向代理服务器:squid用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上......
  • 过滤器,拦截器,AOP的区别
    SpringAOPAOP(AspectOrientProgramming),直译过来就是面向切面编程,AOP是一种编程思想,是面向对象编程(OOP)的一种补充。面向切面编程,实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术,AOP可以拦截指定的方法并且对方法增强,而且无需侵入到业务代码中,使业务与非业......
  • 关于ext2-ext3-ext4文件系统的介绍及区别
    Ext2第二代扩展文件系统(secondextendedfilesystem),是LINUX内核所用的文件系统。它开始由RémyCard设计,用以代替ext,于1993年1月加入linux核心支持之中。Ext2:是GNU/Linux系统中标准的文件系统,其特点为存取文件的性能极好,对于中小型的文件更显示出优势,这主要得利于其簇快取层......
  • Python错误:requests请求https网站报错SSLError
    问题描述:用requests包请求https的网站时,经常会遇到证书问题,也就是常见的SSLerror:requests.exceptions.SSLError:HTTPSConnectionPool(host='www.xxx.com',port=443):Maxretriesexceededwithurl:xxx.html(CausedbySSLError(SSLCertVerificationError(1,'[S......
  • C# HttpClient、API访问插件、接口访问
    关于使用插件访问接口.Net版本:NETFramework4.7.2 RestSharp版本:105.2.3.0Post访问 staticstringPostAction(){//公共apiconststringurl="https://api.uomg.com/api/rand.qinghua";//添加api访问......