HTTP 和 HTTPS详解

HTTP 和 HTTPS详解

目录

HTTP 和 HTTPS详解

1、http 和 https 概述

1.1 什么是http

1.2 什么是https

1.3 两者之间的区别

2、工作原理

2.1 Http工作原理

2.2 Https工作原理

3、疑难总结


1、http 和 https 概述

1.1 什么是http

超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

特点:

(1)无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作

(2)无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。

(3)基于请求和响应:基本的特性,由客户端发起请求,服务端响应

(4)简单快速、灵活

(5)通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性
 

1.2 什么是https

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

特点:

(1)内容加密:采用混合加密技术,中间者无法直接查看明文内容 ;

(2)验证身份:通过证书认证客户端访问的是自己的服务器

(3)保护数据完整性:防止传输的内容被中间人冒充或者篡改

1.3 两者之间的区别

       1,安全性问题:从上面概念也可以看出来HTTP是不安全的,且攻击者通过监听和中间人攻击等手段,可以获取网站帐户和敏感信息等。HTTPS被设计为可防止前述攻击,并在正确配置时被认为是安全的
  2,端口号不同:HTTP的URL由“http://”起始且默认使用端口80,而HTTPS的URL由“https://”起始且默认使用端口443
  3,HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。
  1)对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等;
  2)非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。
 

2、工作原理

2.1 Http工作原理

Http访问网站的的大致过程图解:

2.2 Https工作原理

 HTTPS 协议之所以是安全的是因为 HTTPS 协议会对传输的数据进行加密,而加密过程是使用了非对称加密实现。但其实,HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段

HTTPS的整体过程分为证书验证和数据传输阶段,具体的交互过程如下:

WX20191127-133805@2x.png

(1) 证书验证阶段

  • 浏览器发起 HTTPS 请求
  • 服务端返回 HTTPS 证书
  • 客户端验证证书是否合法,如果不合法则提示告警

 (2)数据传输阶段

  • 当证书验证合法后,在本地生成随机数(例如:生成abcde)
  • 通过公钥加密随机数,并把加密后的随机数传输到服务端
  • 服务端通过私钥对随机数进行解密(解密后服务端得到:abcde)
  • 服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输

3、疑难总结

(1)Https为什么数据传输是用对称加密?

首先,非对称加密的加解密效率是非常低的,而 http 的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的;另外,在 HTTPS 的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以 HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密。

(2)HTTPS的优点

  • 客户端产生的密钥只有客户端和服务器端能得到;
  • 加密的数据只有客户端和服务器端才能得到明文;
  • 客户端到服务端的通信是安全的。

(3)HTTPS的局限/缺点:

  • HTTPS比HTTP耗费更多服务器资源;
  • 耗费的资源多,过程也复杂,想当然访问不如HTTP高效。大流量网站非必要也不会采用,流量成本太高;
  • SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
  • HTTPS并不能防止站点被网络蜘蛛抓取。在某些情形中,被加密资源的URL可仅通过截获请求和响应的大小推得,这就可使攻击者同时知道明文(公开的静态内容)和密文(被加密过的明文),从而使选择密文攻击成为可能。

(4)几连问:

HTTPS 为什么安全?
A: 因为 HTTPS 保证了传输安全,防止传输过程被监听、防止数据被窃取,可以确认网站的真实性。

Q: HTTPS 的传输过程是怎样的?
A: 客户端发起 HTTPS 请求,服务端返回证书,客户端对证书进行验证,验证通过后本地生成用于改造对称加密算法的随机数,通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。

Q: 为什么需要证书?
A: 防止”中间人“攻击,同时可以为网站提供身份证明

Q: 使用 HTTPS 会被抓包吗?
A: 会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。


参考:

https://blog.leapmie.com/archives/418/#%E7%94%A8%E4%BA%86-HTTPS-%E4%BC%9A%E8%A2%AB%E6%8A%93%E5%8C%85%E5%90%97%EF%BC%9F

发布了78 篇原创文章 · 获赞 53 · 访问量 8147

猜你喜欢

转载自blog.csdn.net/qqq3117004957/article/details/105001430