一、什么是HTTPS
HTTPS是HTTP通过SSL(secure socket layer 安全套接层) 或TLS(Transport Layer Security 安全层传输协议)的组合使用,加密的HTTP的通信内容,我们把添加了加密及认证机制的 HTTP 称为 HTTPS
HTTP = HTTP + TCP+IP
HTTPS = HTTP +SSL+TPC+IP
二、传统HTTP协议的缺点
1. 明文通信,内容可能被窃听
由于HTTP不存在加密的功能,所以无法做到对请求和响应的内容进行加密,即HTTP通过明文传输,特别地,TCP/IP
可能是窃听地渠道,安装TCP/IP协议簇的工作机制,通信内容在所有线路都可能遭到窥视,就算是对报文内容加密,也只是让对方不懂它的涵义,但还是能看到该报文。
对应窃听的解决方案,
- 可以使用
https
解决 - 对报文内容进行加密,但必须要求客户端跟服务器同时具备加密与解密的机制。但还是明文传输,仍有被篡改的风险。
2. 不验证双方通信身份, 可能遭遇伪装
HTTP协议的请求与响应不会对通信方进行确认,也就是存在你发送的报文到达的服务器,也许并非是url真正指定的主机,返回的响应是否真的是返回到实际提出请求的客户端的问题。
- web服务器可能是伪装的
- 客户端有可能是伪装的
- 服务器端无法确认对方是否具有访问权限,无法阻止海量请求的DoS攻击(拒绝服务攻击)
解决方案:
- 证书,证书是由第三方机构造的,客户端在通信前确认服务器的证书。
3. 内容篡改
请求或响应中间的链路篡改报文,双方都蒙蔽(中间人攻击)
解决方案:
- HTTP协议的MD5和SHA-1散列值校验数字签名,并不可靠
- HTTPS
三、公钥与私钥
SSL采用公开密钥加密的方式,近代的加密算法是公开的,而密钥是保密。通过这种方式保持加密的安全性。
加密和解密都需要密钥,没有密钥就不能对密码进行破解。一旦攻击者获得了加密与解密的密钥,那么这个就成了笑话。
公开密钥方式很好的解决了这个困境。
公开密钥加密使用一对非对称的密钥。 一把叫做私有密钥(private key) , 另一把叫做公开密钥(public key) 。 顾名思义, 私有密钥不能让其他任何人知道, 而公开密钥则可以随意发布, 任何人都可以获得。使用公开密钥加密方式, 发送密文的一方使用对方的公开密钥进行加密处理, 对方收到被加密的信息后, 再使用自己的私有密钥进行解密。 利用这种方式, 不需要发送用来解密的私有密钥, 也不必担心密钥被攻击者窃听而盗走。