代理SSL流量时,Charles代理如何工作?

时间:2019-01-02 11:20:09

标签: android ssl encryption charles-proxy

当我想查看通过Charles代理的SSL流量时,我需要在智能手机上安装an SSL certificate from Charles。为什么需要查尔斯,查尔斯又有可能解密然后再次加密通过它的数据?

我想像的是,如果某些智能手机应用程序使用SSL,那么:

  • 将数据加密(通过应用程序加密还是通过OS的网络层加密?)
  • 加密的数据被发送到全世界​​,
  • 查尔斯拦截了加密的数据
  • 查尔斯获取加密的数据,并现在如何?

它如何知道如何解密加密的数据?怎么知道如何再次加密解密的数据,然后将其最终发送到最初的目标位置?

1 个答案:

答案 0 :(得分:0)

好的,我要在这里发布的只是我认为与Charles一起使用SSL代理的方式,但是我没有任何坚实的基础来确保我的答案正确。实际上,如果Charles Proxy团队的某人可以在此方面为我们提供帮助,那就太好了。

重点是,当您的应用程序首先向站点执行HTTPS请求时,它必须通过Charles Proxy(不要忘记它是代理!)。目前,Charles使用站点的公钥连接到https站点,以加密和解密数据,就好像它是常规浏览器或应用程序一样。

因此,此时Charles会对来自您的https请求的响应未加密,并且必须将其传递给您的应用程序,但是您的应用程序需要加密的数据,因此Charles必须再次对其进行加密,以便您的应用程序(即:浏览器)不会抱怨未加密的https响应。为此,Charles使用他自己的证书(公钥和私钥对),对您的数据进行加密并将其发送回您的应用程序。

最后,您的应用程序收到了由Charles加密的数据。除非您向他提供证书的公钥,否则您的应用程序将不知道如何解密(通过在应用程序/浏览器/ android设备/等上“安装”证书来完成)。

这就是我认为所有SSL代理与Charles一起工作的方式。

如果有人可以为这个答案做出贡献,那将是非常好的!