为什么要用HTTPS?

前言

  • HTTP作为超文本传输协议,应用领域十分广泛。但在互联网中是明文传输,有诸多风险,那到底为什么不安全呢?

HTTP的不安全

  • 熟悉网络的读者都知道,比如数据传输时,通常直连的,而是走一层层路由。
  • 例如我要访问 www.grapecity.com,查看下路由器的路由过程(Windows命令tracert www.grapecity.com)。如下图所示。

  • 每个路由一层层传递,在每个路由节点中都可以看到我们的数据。如果这时候出了一个不怀好意的人,把数据给拦截了,他还能把数据给改了;在中间当搅屎棍,伪造消息发给服务端或者客户端。这就叫中间人。如下图所示。

中间人举个例子(只是举个例子,并没有黑某个职业的意思):
      像我们写信的时候要把信寄出,邮递员可以把寄出的信拆开看,还可以把信的内容篡改调掉;朋友回信时,邮递员也可以查看到信的内容,想要篡改内容也可以。

数据加密

  • 因为数据是明文传输,那么把数据加密能否解决呢?我们来试想下。

对称加密

  • 客户端和服务器端共同持有一个密钥。这个方案最大的问题是密钥可能泄露。
  • 如果密钥写在客户端代码,总能在客户端找到蛛丝马迹的。
  • 如果是由服务器端把密钥下发到客户端,网络传输过程中有可能被中间人劫持获取到。

非对称加密

  • 客户端持有公钥,服务端持有私钥,公钥加密私钥解密,私钥加密公钥解密。
  • 如果公钥写在客户端代码上,公钥会泄露。这样中间人虽然不能解密客户端发送的消息,但可以把自己的消息给服务器(篡改),服务器端的返回也能用公钥解密。
  • 如果公钥是服务器端下发给客户端。客户端请求下发公钥时,中间人可以冒充客户端请求服务器,服务器返回公钥,中间人得到服务器的返回,把自己的公钥给客户端。以后客户端使用的公钥是中间人给的 ,一旦客户端传输数据,中间人能看到。服务器返回数据,因为中间人持有之前服务器返回的公钥,所以也能看到服务器的返回数据。

CA证书

  • 那么CA证书如何解决中间人的问题呢?
  • CA是可信任的第三方机构。
  • 首先CA证书是不在网络中传递的,也不会在我们的业务代码中。我们会操作系统内置一些,另外也可以手动安装,使用certmgr.msc可以查看,如下图所示。
  • 这时中间人是无法篡改数据的,因为会使用到操作系统内置的证书。除非你的操作系统不安全。

小结

  • HTTPS就是HTTP + SSLSSLCA证书的一种。CA证书操作系统内置规避了很多问题,是21世纪非常伟大的发明。
  • 以上就是我对为什么要用HTTPS的理解,如有不当之处,恳请指出,感激不尽。

posted on 2022-05-27 08:47  愤怒的苹果ext  阅读(43)  评论(0编辑  收藏  举报

导航