前端初识https

为什么要用https?

https 跟 http的区别,其实就是一个加密跟一个非加密的区别。我们为什么要加密呢?因为我们传输的内容在http协议上是全明文的,非常容易被其他人看到传输的内容(典型的如ARP欺骗),这样的话在网页中的登录账号、登录密码等等信息会暴露无疑。

而https协议将会加密传输的内容,就算被其他人看到了也无所谓,因为没有密钥是无法看到中间的内容的。

https涉及的加密算法

  1. 对称加密

对称加密就是加密的双方用的加密解密密钥都是同一个,加密比较大的数据的时候有加密快、效率高、计算量小的优势。如AES、DES。

  1. 非对称加密

非对称加密拥有一对由私钥、公钥组成的密钥。公私钥加密的内容只能由对方解开,私钥由自己保管,公钥发给大家使用。这个加密的优势在于安全,因为密钥都是相对的。但是缺点显而易见就是慢。

http如何保证我们的传输安全

首先,我们从服务端上取得一个密码本(公钥+证书CA)。

为什么需要证书呢?因为需要确认给我们的密码本是不是正规的。在我们的浏览器中内置了对这些证书的验证(数字签名),防止被中间人篡改。

接着我们在客户端上,使用公钥加密一段内容(随机的对称加密密钥)。然后将这段加密内容发送给服务端。

服务端接收到了这段内容之后,使用私钥解密出(随机的对称加密密钥)

哈,那这样双方都拥有了一个对称加密密钥了,在上面,我们也了解到对称加密算法,在加密大的数据时候效率非常高。

服务端使用对称加密密钥加密需要传输的内容,而客户端使用对称加密密钥解密服务端传递过来的内容。

在这样的环境下,传输的内容得到了保证。从而防止我们传输的内容被其他人查阅与篡改。

image-20200318030006115.png

小知识点

  1. 用户可以自行导入根证书,从而保证私有签发证书有效性。
  2. 中间人攻击就是篡改服务端发回的证书,从而达到解密客户端发出的内容。
  3. 有部分手机在https通讯的时候对证书警告,是因为没有预置根证书。
  4. https本身还是基于http协议,只是提供了TLS/SSL协议在表示层进行了安全校验。

摄影爱好者,全栈工程师,游戏玩家,积木苦手,超穷手办收藏爱好者

发表评论