HTTP有什么不足:
通信使用明文,内容可能被窃听
不验证通信双方的身份,可能遭遇伪装(任何人都可以发起请求)
无法证明报文的完整性
SSL(Secure Scoket Layer 安全套接层)
怎么解决上面的问题呢?
http没有加密机制,但可以和SSL或TLS(安全传输层协议)组合使用,加密http通信线路。用SSL建立安全通信线路之后,就可以在线路上进行通信了,组合后就被称为HTTPS(超文本安全传输协议)。另外内容加密会在后面介绍。
SSL还提供了一种证书手段(值得信任的三方机构颁发),可以确定通信双方。
SSL提供认证和加密处理及摘要功能。
综上:HTTP+加密+认证+完整性保护=HTTPS,HTTPS是身披SSL外壳的HTTP。
另外SSL也是有缺点的,HTTPS比HTTP慢2-100倍,包括通信慢和大量消耗CPU和内存资源导致的处理速度变慢。
加密
共享密钥加
即加密和解密使用相同的密钥。也叫做对称密钥加密。密钥的交换是个问题。因为无法确保密钥安全的转交给对方。
公开密钥加密
SSL采用的是公开密钥加密处理方式。公钥+私钥。
发送密文的一方使用对方的公钥进行加密,对方收到加密信息后再使用私钥进行解密。但是处理速度没有共享密钥加密快。
混合加密
HTTPS采用共享密钥加密和公开密钥加密并用的混合加密机制。发挥两者的长处。在交换密钥环节使用公开密钥加密,之后的建立通信交换报文则使用共享密钥加密。
数字证书认证机构CA
但是还是有问题,没法证明公开密钥本身就是货真价实的公开密钥。会不会在公开密钥的传输过程中,真正的公开密钥已经被攻击者替换掉了。为了解决该问题,可以使用数字证书认证机构(CA)颁发的公开密钥证书。这个公开密钥一般在浏览器开发商发布版本时事先植入。
下面是使用CA的大致流程: