2019-10-24 搬砖、盖楼,又是嗨皮的一天(原来我已经入职一个多月了,虽然中间的假期有点长)
1、有了HTTP为什么还要引入HTTPS呢?
要研究这个问题,那首先需要了解一下HTTP的缺点吧:
(1)明文传输数据。
(2)不验证通信方的身份。
(3)无法证明通信传输时的数据完整性。
与之对应的问题是:
(1)通信明文传输,就可能造成:通信内容可能被窃听。
(2)不验证通信方的身份,那你可能会遇到一个伪装的客户端或者服务器。
(3)无法证明通信传输数据的完整性,那数据本身就可能遭到恶意篡改。
所以,在HTTP协议中有可能存在信息被窃听或伪装等安全问题。这个时候,HTTPS作为一名小救星,就闪亮登台了。
综合来说,HTTPS解决的问题就是:HTTP无法保证数据通信过程中的安全性。
2、那HTTPS是怎么解决这三个典型的问题呢?
(1)明文传输数据。
各位有想法的小可爱们可能会说了“切~,你加个密不就完事了吗”。
是的,加个密确实就完事了。但是HTTP本身是不具备加密功能的,所以也无法做到对通信的整体(请求&响应)加密。
根据TCP/IP协议族的工作机制,我们可以得出通信内容在所有通信线路上都有可能遭到窃听的结论。想想一下,多可怕~
还敢乱浏览网站吗~
为了解决这个问题,HTTP通信机制中引入了SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全层传输协议)来加密HTTP的通信内容。
这就是HTTPS
与SSL组合使用的HTTP被称为HTTPS或HTTP over SLL。知道HTTPS的这个S是怎么来的吧。
(2)不验证通信方的身份
HTTP协议中的请求和响应是不会对通信方进行确认的。
也就是说,它存在这些问题:
客户端发起一个请求它不能确定就真的请求到了想要的服务器,有可能是伪装的服务器;
服务器返回一个响应也不能确定就是发到目标客户端上了,有可能是伪装的客户端;
无法判定请求来自何方、出自谁手,即使是无意义的请求也会照单全收。
“如果有一种证书,能证明通信方的身份就好了。”
呐,SSL正好有这种功能,它可以确定通信方的身份,因为SSL除了报文加密还提供了一种证书来确认通信方身份(数字证书)。
何为证书?证书是由受信任的第三方机构颁发(比较厉害是CA),用以证明服务器和客户端的真实性。
使用证书可以减少个人信息的泄漏哦~
(3)数据丢失或者被篡改,无法保证数据完整性
HTTP是没有办法证明通信的报文完整性的。所谓完整性是指信息的准确度。
如果一个请求数据的准确度无法保证,那这些数据就有被篡改的风险,通信方接收到的内容就就可能存在错误。也可能在通信的过程中遭到攻击者的拦截并恶意篡改报文数据。
中间人攻击
为了防止报文在通信的时候被拦截并恶意篡改,必须要使用SSL提供的人证和加密处理及摘要功能。也就是数字签名(百度百科对数字签名解释的很清楚~此处不再赘述)。
so,总结一下:
1、https的出现是为了解决HTTP的三个缺点。
2、HTTP+加密+认证+完整性保护=HTTPS












网友评论