一、HTTP与HTTPS介绍

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

HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

二、HTTP工作原理图

在这里插入图片描述
状态解释:

500 Internal Server Error	服务器内部错误,无法完成请求
505	HTTP Version not supported	服务器不支持请求的HTTP协议的版本,无法完成处理
414	Request-URI Too Large	请求的URI过长(URI通常为网址),服务器无法处理
400	Bad Request	客户端请求的语法错误,服务器无法理解
404	Not Found	服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
301	Moved Permanently	永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302	Found	临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
405	Method Not Allowed	客户端请求中的方法被禁止
200 ok  请求成功。图中没显示来。
三、HTTPS工作原理图在这里插入图片描述
四、HTTP与HTTPS区别
  1. https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
  2. http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。
  3. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  4. http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全
五、HTTPS的缺点

HTTPS的优点就是安全,没什么可说的,虽然说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:

(1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
(2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
(3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
(4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
(5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

实践中建议保留http。所以我们在切换的时候可以做http和https的兼容,具体实现方式是,去掉页面链接中的http头部,这样可以自动匹配http头和https头。例如:将http://www.baidu.com改为//www.baidu.com。然后当用户从http的入口进入访问页面时,页面就是http,如果用户是从https的入口进入访问页面,页面即使https的。

六、SSL与TLS
历史

1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1.0版,但是未发布。
1995年,NetScape公司发布SSL 2.0版,很快发现有严重漏洞。
1996年,SSL 3.0版问世,得到大规模应用。
1999年,互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版。
2006年和2008年,TLS进行了两次升级,分别为TLS 1.1版和TLS 1.2版。最新的变动是2011年TLS 1.2的修订版,在2018年也发布了TLS1.3版本。
TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。

介绍

SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。
TLS(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。

目前应用的最广泛的 TLS 是 1.2,而之前的协议(TLS1.1/1.0、SSLv3/v2)都已经被认为是不安全的了。

SSL与TLS的关系

TLS是SSL 3.0的后续版本。在TLS与SSL3.0之间存在着显著的差别,主要是它们所支持的加密算法不同,所以TLS与SSL3.0不能互操作。

SSL是Netscape开发的专门用户保护Web通讯的,目前版本为3.0。最新版本的TLS(Transport Layer Security,传输层安全协议)是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议。最新版本的TLS 1.0,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。两者差别极小,可以理解为SSL 3.1。

SSL与TLS的功能:
  1. 在互联网上传输加密过的资料以达到防窃取的目的。

  2. 保持从端点A到端点B的传送路途中资料的完整性。

  3. 透过SSL证书内的公共金钥加密资料传输至服务器端,服务器端用私密金钥解密来证明自己的身份。

七、HTTPS优化

我们知道Https比Http慢的原因在于tcp三次握手之后,还有TLS握手,可以通过简化这部分的握手来优化。

TCP三次握手和TLS握手流程图

大致图:
在这里插入图片描述
详细图:
在这里插入图片描述

优化点
  1. 利用session id,当我们第一次连接之后,客户端会生成session id,当下一次客户端再次和服务端连接的时候,通过携带的session id如果在服务端可以找到,那么就认为客户端是可信赖的。
  2. 利用session ticket,也在客户端连接的时候会附带上,当再次连接的时候,直接解密session ticket,如果解密成功,则认为是可信赖,直接进行数据传输。
  3. 对于分布式系统,当在一个服务器生成的session id,把它同步到其他服务器,那么当客户端连接其他服务器的时候,直接可以通过这个id判断是否可信赖。
  4. 利用tcp连接优化,前面介绍tcp三次握手的时候,数据域没有携带数据的,那么可以在tcp三次握手的时候,就携带数据,减少握手次数。
  5. 证书验证优化,TLS握手过程中,客户端需要验证证书的有效性,这一部分可以直接通过服务器验证,将结果缓存,将验证结果返回给客户端,客户端在本地校验结果是否真实。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐