Http和HTTPS
Tags: 面试
1. 为什么需要Https
1.1 Http协议的缺点
- 通信使用明文传输,内容可能会被窃听。
- 不验证通信方的身份,有可能遭遇跨站请求伪造。
- 无法证明报文的完整性,有可能发生报文被修改的状况。
1.2 Https如何解决上述问题。
Https是在Http的基础之上加入加密处理,认证机制和完整性保护的。即Http+加密+认证+通信保护=Https
,
- 通过加密可以防止明文传输的时候密码等关键信息被窃取。
- 通过认证确保通信方的身份,防止出现跨站点的请求伪造攻击。
- 通过完整性保护,确保在信息的传输过程中没有遭到信息篡改的状况。
1.3 实现方案
Https
并不是一种新的协议,只是http
通信接口部分使用ssl/tls
协议代替而已。通常http
是直接和tcp
进行通信确保在不收到外部干扰的情况下,保证信息的完整性接收。但是Http
协议是在http
和tcp
之间加入了ssl/tls
。让http
先和ssl/tls
进行通信,然后ssl/tls
再去和tcp
进行通信。在中间的ssl/tls
的过程中对传输的信息进行加密,认证,保护
。 去防止上面讲到的Http
的缺点。
其实所谓的Https就是在Http和TCP之间加了一个SSL。
2. SSL/TLS是什么
SSL是(Secure Sockets Layer)
的缩写,中文成为安全套接层。这个是网景公司(NetScape网景浏览器?)
设计的。
为何要发明SSL这个协议?以为之前的HTTP协议是明文的,存在很多缺点具体的看上面。发明这个协议就是为了解决上述问题。
SSL/TLS
协议的基本思路就是采用公钥加密,也就是说,客户端向服务端索要公钥,然后用公钥加密信息,服务器收到密文之后,用自己的私钥解密。但是这里存在两个问题:
- 如何保证公钥不被篡改
- 公钥加密,私钥解密计算量太大,比较耗费时间如何减少耗用的时间。
解决方案
- 将公钥放在数字证书当中,只要证书是可信的,那么公钥就一定是可信的。
- 每一次对话(Session),客户端和服务端都生成一次对话秘钥,又变成了对称加密,且对称加密的秘钥泄露的风险会大大降低。
这种搭配使用可以延伸到GC,Redis锁。