“确保Web安全的HTTPS”
(What)什么是HTTPS?
HTTP + 加密 + 认证 + 完整性保护 = HTTPS。HTTP加上加密处理和认证以及完整性保护后即是HTTPS。
一道题:HTTP和HTTPS的区别?
答:
- HTTP协议运行TCP之上,所有传输的内容都是明文的;HTTPS运行SSL/TLS之上,SSL/TLS运行TCP之上,所有传输的内容都经过加密的。
- HTTP默认端口为80,HTTPS默认端口为443。
HTTPS是身披SSL外壳的HTTP,看一个图吧(╹▽╹)
(Why)为什么要使用HTTPS?
HTTP的缺点 | HTTPS保证安全机制 |
---|---|
通信使用明文(不加密),内容可能会被窃听 |
|
不验证通信方的身份,可能遭遇伪装。例:DoS攻击 | SSL提供的证书 |
无法证明报文的完整性,可能已遭篡改。例:中间人攻击(MITM) | SSL提供的摘要功能 |
注:
内容加密的缺点:1. 客户端和服务端需同时具备加密和解密机制;2. 内容仍有被篡改的风险。
(How)HTTPS的通信过程?
① 客户端向服务器发起请求,请求中包含客户端支持的SSL版本、加密组件列表(加密方法(算法))
② 服务器端接收到请求后发送ServerHello报文,报文中包含SSL版本、确认双方使用的加密方法(算法)
③ 发送Certificate报文,包含公开**证书(公开** + 数字签名)
④ SSL握手协商部分结束
⑤ 客户端确认服务器证书有效后。发送回应报文,生成共享**【随机密码串(Pre-master secret)】,用步骤③得到的公钥进行加密发送到服务端
⑥ 发送报文,提示服务器,之后通信采用共享**加密【Pre-master secret**加密】
⑦ SSL握手协商部分结束,这次握手是否成功,以服务器能否正确解密为准
⑧ 服务端使用私密解密,并使用共享**加密数据,发送到客户端
⑨ 客户端使用共享**解密数据
⑩ SSL加密建立完成
对着上述步骤看一个图吧(〃‘▽’〃)
参考资料
《图解HTTP》