贾岛醉来非假倒,刘伶饮尽不留零.
HTTP协议中很容易出现信息窃听和身份伪装等安全问题,HTTPS协议能有效防止这些.
1.HTTP的缺点
HTTP协议当然是很优秀的通信协议,但这并不代表此协议很安全,事实上,HTTP协议也有很多不足之处:
通信使用明文,内容很可能被窃听
不验证通信双方的身份,有可能遭遇伪装
无法证明报文的完整性,有可能遭篡改
1.1 通信使用明文,有可能被窃听
HTTP本身不具备对通信内容加密的功能,即HTTP通信使用明文.而互联网上任何角落都存在通信内容被窃听的风险,即使是已经通过加密的通信,其内容也会被窥探到,只不过让人难以知道其真实内容.所以为了防窃听以保护信息,最为常见的有两种加密技术.
通信的加密: HTTP中没有加密机制,但可以通过与SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Securty)的组合使用,加密HTTP的通信内容.用SSL建立安全通信线路后,就可以在这条线路上进行HTTP通信了.与SSL组合使用的HTTP成为HTTPS.
内容的加密: 即客户端对报文进行加密后再发送请求,此时客户端和服务端都应该具备加解密的方法,不同于HTTPS加密整个通信线路,此对内容的加密仍然有被篡改的风险.
1.2 不验证通信双方的身份,可能遭遇伪装
HTTP协议中的请求和响应不会对通信方进行确认,也就存在服务器不是发送请求中URI指定的主机,客户端不是实际的客户端等情况.
任何人都可发送请求: 在HTTP协议中,由于不验证通信双方身份,任何人都可发送请求,而当服务器接到请求时都会返回一个响应,因此会存在各种隐患.
查明对方的证书: SSL不仅可以为通信内容进行加密,还使用证书的手段用于确定双方身份,证书由值得信任的第三方机构颁发,用以证明客户端和服务端确实存在.
1.3 无法证明报文完整性
接收到的内容可能有误: HTTP协议无法证明报文的完整性,即使报文被更改也无法察觉,像在请求或响应途中遭攻击者拦截并篡改内容的的攻击称为中间人攻击.
如何防止篡改: 常用MD5或SHA1等散列值校验或确认文件的数字签名等方式.
2.HTTP+加密+认证+完整性校验=HTTPS
2.1 HTTPS身披SSL外壳
HTTPS并非是应用层的一种新协议,只不过在HTTP通信接口部分使用SSL协议代替,通常HTTP直接与TCP通信,当使用SSL后,先和SSL通信,再和HTTP通信.采用SSL后,HTTP就拥有了加密,证书和完整性保护等功能.HTTPS加密模式采用混合加密,即先用共享秘钥对数据进行加密,再使用非对称加密模式的公钥加密对称加密模式的共享秘钥的方式通信.
2.2 证明公开密钥正确性的证书
除了用来证明通信双方是否规范,证书还有用来证明服务器背后的企业是否真实存在,例如EV SSL证书.