最近看了图解HTTP一书,记录一下,面试常问的HTTPS。后续会不断修正。。。加油,小白。
在 HTTP 协议中有可能存在信息窃听或身份伪装等安全问题。使用
HTTPS 通信机制可以有效地防止这些问题。以下就先聊HTTP的缺点然后看HTTPS如何克服这些缺点。
1.HTTP 的缺点
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
这些问题不仅在 HTTP 上出现,其他未加密的协议中也会存在这类问题。另外,用 Java 和 PHP 等编程语言开发的
Web 应用也可能存在安全漏洞。
由于 HTTP 本身不具备加密的功能,所以也无法做到对通信整体(使用 HTTP 协议通信的请求和响应的内容)进行加密。即,HTTP 报文使用明文(指未经过加密的报文)方式发送。未进行安全保护的通信,在整个通信过程中都有可能被监听或者攻击。就如下图一样。
窃听相同段上的通信并非难事。只需要收集在互联网上流动的数据包(帧)就行了。对于收集来的数据包的解析工作,可交给那
些抓包(Packet Capture)或嗅探器(Sniffer)工具。由于HTTP存在三个致命缺陷从而出现了HTTPS。
2.HTTPS详解
HTTP+ 加密 + 认证 + 完整性保护=HTTPS
也即:HTTP 加上加密处理和认证以及完整性保护后即是HTTPS
如果在 HTTP 协议通信过程中使用未经加密的明文,比如在 Web 页面中输入信用卡号,如果这条通信线路遭到窃听,那么信用卡号就暴露了。
另外,对于 HTTP 来说,服务器也好,客户端也好,都是没有办法确认通信方的。因为很有可能并不是和原本预想的通信方在实际通信。并且还需要考虑到接收到的报文在通信途中已经遭到篡改这一可能
性。
统一解决上述这些问题,需要在 HTTP 上再加入加密处理和认证等机制。我们把添加了加密及认证机制的 HTTP 称为 HTTPS(HTTP Secure)。
经常会在 Web 的登录页面和购物结算界面等使用 HTTPS 通信。使用HTTPS 通信时,不再用 http://,而是改用 https://。另外,当浏览器访问 HTTPS 通信有效的 Web 网站时