Https

作者: J星O海E | 来源:发表于2021-07-05 12:04 被阅读0次

    Http为什么不安全

    http协议属于明文传输协议,交互过程以及数据传输都没有进行加密,通信双方也没有进行任何认证,通信过程非常容易遭遇劫持、监听、篡改。

    中间人攻击

    在http通信过程中,“中间人”将广告链接嵌入到服务器发给用户的http报文里,导致用户界面出现很多不良链接; 或者是修改用户的请求头URL,导致用户的请求被劫持到另外一个网站,用户的请求永远到不了真正的服务器。

    https如何保证安全

    1、服务器和客户端传输的数据是加密的。

    2、在交换数据之前,验证一下对方的合法身份。

    https原理

    但这还是会遇到中间人攻击,中间人会伪装成“假冒客服端”和服务器通信,也可以伪装成“假冒服务器端”和客服端通信,导致传输过程中内容泄密。

    为了解决这个问题,引入数字证书。

    加入数字证书后的流程

    服务器首先生成公私钥,将公钥提供给相关机构(CA),CA将公钥放入数字证书并将数字证书颁布给服务器,此时服务器就不是简单的把公钥给客户端,而是给客户端一个数字证书,数字证书中加入了一些数字签名的机制,保证了数字证书一定是服务器给客户端的。

    中间人发送的伪造证书,不能够获得CA的认证,此时,客户端和服务器就知道通信被劫持了。

    数字证书的作用

    1、身份授权:确保浏览器访问的网站是经过CA验证的可信任的网站。

    2、分发公钥:每个数字证书都包含了注册者生成的公钥(验证确保是合法的,非伪造的公钥),在SSL握手时会通过certificate消息传输给客户端。

    3、验证证书合法性:客户端接收到数字证书后,会对证书合法性进行验证,只有验证通过后的证书,才能够进行后续通信过程。

    双向认证

    1、先决条件是有两个或两个以上的证书,一个是服务端证书,另一个或多个是客户端证书。

    2、服务端保存着客户端的证书并信任该证书,客户端保存着服务端的证书并信任该证书。这样,在证书验证成功的情况下即可完成请求响应。

    3、双向认证一般企业应用对接。

    单向认证

    1、客户端保存着服务端的证书并信任该证书即可

    2、https一般是单向认证,这样可以让绝大部分人都可以访问你的站点。

    Charles抓取https数据的原理

    客户端向服务器发起HTTPS请求

    Charles拦截客户端的请求,伪装成客户端向服务器进行请求

    服务器向“客户端”(实际上是Charles)返回服务器的CA证书

    Charles拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端。(Charles拿到了服务器证书的公钥)

    客户端接收到“服务器”(实际上是Charles)的证书后,生成一个对称密钥,用Charles的公钥加密,发送给“服务器”(实际上是Charles)

    Charles拦截客户端的响应,用自己的私钥解密对称密钥,然后用服务器证书公钥加密,发送给服务器。(这一步,Charles拿到了对称密钥)

    服务器用自己的私钥解密对称密钥,向“客户端”(实际上是Charles)发送响应

    Charles拦截服务器的响应,替换成自己的证书后发送给客户端

    至此,连接建立,Charles拿到了服务器证书的公钥客户端与服务器协商的对称密钥,之后就可以解密或者修改加密的报文了。

    如何防止Charles抓取https数据

    1、当网络请求的时候,客户端判断当前环境是否设置了代理,如果设置代理,不允许进行访问。

    2、客户端本地做证书校验,并且设置不仅仅校验公钥,设置完整的正式校验模式

    3、客户端不要轻易信任证书。

    参考文档:https://www.jianshu.com/p/35f78893aa50

    https://www.jianshu.com/p/3941410f7378

    相关文章

      网友评论

          本文标题:Https

          本文链接:https://www.haomeiwen.com/subject/lzpfultx.html