HTTP的缺点
- 通信使用明文,内容可能被窃听
- 不验证通信方身份,因此有可能遇伪装
- 无法证明报文完整性,所以有可能已遭篡改
HTTP+加密+认证+完整性保护=HTTPS
HTTP加上加密处理和认证以及完整性保护后即是HTTPS
HTTPS是身披SSL外壳的HTTP
- 通常,HTTP直接与TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信。
互交换密钥的公开密钥加密技术
- SSL采用 公开密钥加密 的加密处理方式
- 共享密钥加密(对称密钥加密):加密和解密同用一个密钥。
- 公开密钥加密(非对称密钥加密):使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。
- HTTPS使用的是共享密钥加密和公开密钥加密的混合加密机制。因为公开密钥加密相比于共享密钥加密速度慢,所以应充分利用两者各自的优势,将多种方法组合起来用于通信。在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。
- 在第一步、即公钥传递的过程中,无法证明这个公钥匙货真价实的,所以引入了数字证书认证机制。
- 认证流程
- 服务器的运营人员向数字证书认证机构提出公开密钥的申请
- 数字证书认证机构在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起(数字证书认证机构用自己的私钥对服务器的公钥进行加密并发布证书)
- 服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥加密方式通信
- 证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,认证通过即证明此公钥匙值得信赖的,可进行接下来的通信(客户端拿到公钥证书后,使用数字证书机构的公钥对签名后的服务器公钥进行解密,以确认服务器公钥的真实性)
- 为什么不一直使用HTTPS
- HTTPS因为使用了加密通信,会消耗更多的CPU及内存资源,随着客户端的增加,尤其对服务器压力更大
- 节约购买证书的开销