HTTPS协议入门

HTTPS协议入门

1. HTTPS出现的背景

虽然HTPP协议很优秀而且方便,可是不得不正视HTTP协议存在的一些问题:算法

  • 通讯使用明文(不加密),内容可能会被窃听;
  • 不验证通讯双方的身份,所以有可能遭遇假装;
  • 没法证实报文的完整性,因此有可能已遭篡改;

这些问题不只在HTTP协议上出现,其余未加密的协议中也会存在这类问题。安全

因为这些问题的存在,HTTPS协议就应运而生,HTTPS,超文本传输安全协议,是和SSL(Secure Socket Layer,安全套接层)或者TLS(Transport Layer Security,安全传输层协议)组合使用的,一般HTTP直接和TCP通讯,当使用SSL时,则演变成先和SSL通讯,再由SSL和TCP通讯了。服务器

2. HTTPS的三大功能

上面提到了HTPP协议的不足,下面说一下HTTPS是如何解决这三个问题的。网络

2.1 通讯使用明文(不加密),内容可能会被窃听

在网络上传输信息,自己就是能够被他人截获的,好比经过抓包工具,第三者就能够在同局域网的一台主机,或者路由器或者互联网的任何地方均可能被截获数据。HTPP使用明文传输,至关于你传输的数据彻底暴露在了网络上。并发

HTTPS传输数据的时候会对通讯进行加密,使用SSL创建安全线路以后,就能够在这条线路上进行HTTP通讯了。至关于单独创建了一条安全信道。工具

2.2 不验证通讯双方的身份,所以有可能遭遇假装

HTTP协议中的请求和响应不会对通讯双方进行确认,也就是说存在“服务器是否就是发送请求中URI真正的主机,返回的响应是不是真的返回到实际提出请求的客户端”等相似问题。而且,因为不存在通讯双方的处理步骤,任何人均可以发起请求。可能会出现DOS攻击等问题。加密

HTTPS中SSL就能够确认确认通讯方,它提供了一种被称为证书的手段,证书由值得信赖的第三方机构颁发,用以证实服务器和客户端是实际存在的,另外伪造证书从技术角度说是异常困难的一件事,因此只要能确认通讯方持有的证书就能够判断通讯方的真实意图。md5

2.3 没法证实报文的完整性,因此有可能已遭篡改

HTTP协议没法确认客户端发出的请求和服务端接收到的请求是相同的,一样,也没法确认服务端发送的响应和客户端接收的响应是相同的。很容易出现中间人攻击。路由

虽然HTTP协议可使用md5等信息摘要算法保证数据完整性,可是MD5自己均可能被篡改,也就没法保证其安全性。SSL提供了摘要功能。能够保证数据的完整性。it

从HTTPS的功能来看,能够总结为:HTTP+加密+认证+完整性保护=HTTPS。

3. HTTPS的混合加密机制

首先先来谈谈两种加密方法:

  • 共享密钥加密:加密和解密使用相同的密钥,可是在通讯的时候须要把密钥也一并发送,这样有可能被别人截获;
  • 公开密钥加密:加密和解密使用不一样的密钥,服务器提供公开密钥,客户端使用公开密钥对数据进行加密,而后服务器使用私有密钥对密文进行解密,这样就保证密文不会被破解。

可是使用公开密钥加密方式传输数据比较慢,因此HTTPS结合了二者的优势,使用混合加密机制,首先在交换密钥的时候使用公开密钥加密方式,确认链接后,传输数据使用共享密钥加密方式。

4. HTTPS使用场景

当使用HTTPS时,通讯会变慢,致使通讯变慢的缘由有两个,一是网络负载,当使用HTTPS进行通讯时,网络负载比HTTP要高2-100倍。而是因为HTTPS每次通讯都要加解密,对CPU的消耗也很大。因此通常只有在传输机密信息时使用HTTPS,好比用户密码,银行信息等。

再有就是使用HTTPS须要支付购买证书的费用,一些机构考虑到这点也可能优先选择HTTP协议。

参考:

《图解HTTP》

相关文章
相关标签/搜索