《图解HTTP》笔记-HTTPS
HTTP的不足
通信使用明文(不加密),内容可能会被窃听
通信加密:通过和SSL或TLS组合使用进行通信加密(HTTPS)
内容加密:对通信内容(报文主体)进行加密,有被篡改风险
不验证通信方的身份,因此有可能遭遇伪装(照单全收)
查明对手的证书:使用SSL加密处理,利用证书来指明通信双方真实可靠
无法证明报文的完整性,所以有可能已遭篡改
MD5和SHA-1等散列值校验:如果MD5等本身被修改,也不是百分百可靠
HTTPS:SSL提供认证和加密处理及摘要功能
HTTPS(加密+认证+完整性保护)
HTTP先和SSL通信,经过加密,认证,完整性保护处理后,再到TCP通信
加密
共享密匙(对称密匙加密):加密解密使用相同的密匙,需要通信双方都有该密匙,在传递密匙中可能被窃取
公开密匙(非对称密匙加密):加密用公开密匙,解密用私有密匙,只需要将公开密匙传递出去,不用担心密匙窃取问题(窃取也无法解密),速度相比慢些,所以HTTPS混合加密,用公开密匙来交换共享密匙,保证传递安全性。但传递公开密匙时可能被替换,因此需要用到证书
证书(解决公开密匙传递安全性问题)
HTTPS通信机制
- 客户端发送 Client Hello 报文开始 SSL通信。报文中包含客户端支持的 SSL的指定版本、加密组件(Cipher Suite)列(所使用的加密算法及**长度等)
- 服务器以 Server Hello 报文作为应答。和客户端一样,在报文中包含 SSL版本以及加密组件。
- 服务器发送Certificate 报文,报文中包含公开**证书
- 服务器发送 Server Hello Done 报文通知客户端,最初阶段的 SSL握手协商部分结束
- 客户端发送Client Key Exchange 报文作为回应。报文中包含通信加密中使用的一种被称为 Pre-mastersecret 的随机密码串。
- 客户端继续发送 Change Cipher Spec 报文。该报文会提示服务器,在此报文之后的通信会采用 Pre-master secret **加密
- 客户端发送 Finished 报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。
- 服务器同样发送 Change Cipher Spec 报文
- 服务器同样发送 Finished 报文
- SSL连接就算建立完成。当然,通信会受到 SSL的保护。从处开始进行应用层协议的通信,即发送 HTTP 请求
使用SSL/TLS时的问题
耗内存,CPU,需要加密解密处理
通信慢,增加了SSL通信
购买证书需要开销
所以主要还是用于需要登录信息,收付款等需要安全性较高的地方