前端初识https
为什么要用https?
https 跟 http的区别,其实就是一个加密跟一个非加密的区别。我们为什么要加密呢?因为我们传输的内容在http协议上是全明文的,非常容易被其他人看到传输的内容(典型的如ARP欺骗),这样的话在网页中的登录账号、登录密码等等信息会暴露无疑。
而https协议将会加密传输的内容,就算被其他人看到了也无所谓,因为没有密钥是无法看到中间的内容的。
https涉及的加密算法
- 对称加密
对称加密就是加密的双方用的加密解密密钥都是同一个,加密比较大的数据的时候有加密快、效率高、计算量小的优势。如AES、DES。
- 非对称加密
非对称加密拥有一对由私钥、公钥组成的密钥。公私钥加密的内容只能由对方解开,私钥由自己保管,公钥发给大家使用。这个加密的优势在于安全,因为密钥都是相对的。但是缺点显而易见就是慢。
http如何保证我们的传输安全
首先,我们从服务端上取得一个密码本(公钥+证书CA)。
为什么需要证书呢?因为需要确认给我们的密码本是不是正规的。在我们的浏览器中内置了对这些证书的验证(数字签名),防止被中间人篡改。
接着我们在客户端上,使用公钥加密一段内容(随机的对称加密密钥)
。然后将这段加密内容发送给服务端。
服务端接收到了这段内容之后,使用私钥解密出(随机的对称加密密钥)
。
哈,那这样双方都拥有了一个对称加密密钥
了,在上面,我们也了解到对称加密算法,在加密大的数据时候效率非常高。
服务端使用对称加密密钥
加密需要传输的内容,而客户端使用对称加密密钥
解密服务端传递过来的内容。
在这样的环境下,传输的内容得到了保证。从而防止我们传输的内容被其他人查阅与篡改。
小知识点
- 用户可以自行导入根证书,从而保证私有签发证书有效性。
- 中间人攻击就是篡改服务端发回的证书,从而达到解密客户端发出的内容。
- 有部分手机在https通讯的时候对证书警告,是因为没有预置根证书。
- https本身还是基于http协议,只是提供了TLS/SSL协议在表示层进行了安全校验。