深入解析Charles抓包工具的工作原理及HTTPS加密通信流程

📅 2026/8/1 10:31:55
深入解析Charles抓包工具的工作原理及HTTPS加密通信流程
一、charles简介Charles 是一个 HTTP 代理/HTTP 监视器/反向代理它使开发人员能够查看他们的机器和 Internet 之间的所有 HTTP 和 SSL/HTTPS 流量。 这包括请求、响应和 HTTP 标头其中包含 cookie 和缓存信息。除了CharlesSniffMaster是另一款强大的抓包工具它支持全平台包括iOS、Android、Mac和Windows的HTTPS、TCP和UDP协议抓包。SniffMaster无需设置代理、越狱或root即可实现抓包操作提供了便捷的代理抓包和暴力抓包功能特别适合移动端和桌面端的网络调试。二、相关概念1、对称加密其变成复杂的加密密文发送出去。收信方收到密文后若想解读原文则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密才能使其恢复成可读明文。在对称加密算法中使用的密钥只有一个发收信双方都使用这个密钥对数据进行加密和解密这就要求解密方事先必须知道加密密钥。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是交易双方都使用同样钥匙安全性得不到保证。此外每对用户每次使用对称加密算法时都需要使用其他人不知道的惟一钥匙这会使得发收信双方所拥有的钥匙数量呈几何级数增长密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难主要是因为密钥管理困难使用成本较高。而与公开密钥加密算法比起来对称加密算法能够提供加密和认证却缺乏了签名功能使得使用范围有所缩小。在计算机专网系统中广泛使用的对称加密算法有DES和IDEA等。美国国家标准局倡导的AES即将作为新标准取代DES。2、非对称加密对称加密算法在加密和解密时使用的是同一个秘钥而非对称加密算法需要两个密钥来进行加密和解密这两个秘钥是公开密钥public key简称公钥和私有密钥private key简称私钥。1、乙方生成一对密钥公钥和私钥并将公钥向其它方公开。2、得到该公钥的甲方使用该密钥对机密信息进行加密后再发送给乙方。3、乙方再用自己保存的另一把专用密钥私钥对加密后的信息进行解密。乙方只能用其专用密钥私钥解密由对应的公钥加密后的信息。在传输过程中即使攻击者截获了传输的密文并得到了乙的公钥也无法破解密文因为只有乙的私钥才能解密密文。同样如果乙要回复加密信息给甲那么需要甲先公布甲的公钥给乙用于加密甲自己保存甲的私钥用于解密。3、https如何使用对称加密和非对称加密HTTPS的解决方案是这样的用非对称算法随机加密出一个对称密钥然后双方用对称密钥进行通信。具体来说就是客户端生成一个随机密钥用服务器的公钥对这个密钥进行非对称加密服务器用私钥进行解密然后双方就用这个对称密钥来进行数据加密了。4、信任主机采用https的服务器必须从CA Certificate Authority申请一个用于证明服务器用途类型的证书。该证书只有用于对应的服务器的时候客户端才信任此主机。所以所有的银行系统网站关键部分应用都是https 的。客户通过信任该证书从而信任了该主机。其实这样做效率很低但是银行更侧重安全。这一点对局域网对内提供服务处的服务器没有任何意义。局域网中的服务器采用的证书不管是自己发布的还是从公众的地方发布的其客户端都是自己人所以该局域网中的客户端也就肯定信任该服务器。5、HTTPS通信流程客户端的浏览器向服务器传送客户端SSL 协议的版本号加密算法的种类产生的随机数以及其他服务器和客户端之间通讯所需要的各种信息服务器向客户端传送SSL 协议的版本号加密算法的种类随机数以及其他相关信息同时服务器还将向客户端传送自己的证书客户利用服务器传过来的信息验证服务器的合法性服务器的合法性包括证书是否过期发行服务器证书的CA 是否可靠发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过通讯将断开如果合法性验证通过将继续进行第四步用户端随机产生一个用于后面通讯的“对称密码”然后用服务器的公钥服务器的公钥从步骤②中的服务器的证书中获得对其加密然后将加密后的“预主密码”传给服务器如果服务器不要求客户的身份认证在握手过程中为可选用户可以建立一个随机数然后对其进行数据签名将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器如果服务器要求客户的身份认证服务器必须检验客户证书和签名随机数的合法性具体的合法性验证过程包括客户的证书使用日期是否有效为客户提供证书的CA 是否可靠发行CA 的公钥能否正确解开客户证书的发行CA 的数字签名检查客户的证书是否在证书废止列表CRL中。检验如果没有通过通讯立刻中断如果验证通过服务器将用自己的私钥解开加密的“预主密码”然后执行一系列步骤来产生主通讯密码客户端也将通过同样的方法产生相同的主通讯密码服务器和客户端用相同的主密码即“通话密码”一个对称密钥用于SSL 协议的安全数据通讯的加解密通讯。同时在SSL 通讯过程中还要完成数据通讯的完整性防止数据通讯中的任何变化。客户端向服务器端发出信息指明后面的数据通讯将使用的步骤5中的主密码为对称密钥同时通知服务器客户端的握手过程结束服务器向客户端发出信息指明后面的数据通讯将使用的步骤5中的主密码为对称密钥同时通知客户端服务器端的握手过程结束服务器向客户端发出信息指明后面的数据通讯将使用的步骤5中的主密码为对称密钥同时通知客户端服务器端的握手过程结束三、charles抓包原理客户端向服务器发起HTTPS请求Charles拦截客户端的请求伪装成客户端向服务器进行请求服务器向“客户端”实际上是Charles返回服务器的CA证书Charles拦截服务器的响应获取服务器证书公钥然后自己制作一张证书将服务器证书替换后发送给客户端。客户端接收到“服务器”实际上是Charles的证书后生成一个对称秘钥用Charles的公钥加密发送给“服务器”CharlesCharles拦截客户端的响应用自己的私钥解密对称密钥(Charles拿到了对密钥)然后用服务器证书公钥加密发送给服务器。服务器用自己的私钥解密对称密钥向“客户端”Charles发送响应Charles拦截服务器的响应替换成自己的证书后发送给客户端至此连接建立Charles拿到了 服务器证书的公钥 和 客户端与服务器协商的对称密钥之后就可以解密或者修改加密的报文了。对于HTTPS抓包SniffMaster提供了更直接的暴力抓包模式无需中间人代理即可解密HTTPS流量支持指定APP过滤和双向验证爆破简化了抓包流程并提高了效率。