在进行 iOS 应用的开发或测试时,我们可能需要使用到 Fiddler 工具进行抓包分析。然而,在使用 Fiddler 进行抓包时,可能会出现“苹果证书不可信”的提示,导致无法正常抓包。那么,这个问题是什么原因造成的呢?下面就来详细介绍一下。
1. iOS 系统的安全机制
首先,我们需要了解一下 iOS 系统的安全机制。iOS 系统中有一个叫做“证书链”的概念,它用于验证应用程序与服务器之间的安全连接。证书链包括了服务器的证书和中间证书颁发机构的证书,最终验证服务器证书的有效性。
对于 HTTPS 请求,如果服务器的证书与设备中的证书不匹配,iOS 系统会拒绝连接,并提示“证书不可信”的错误信息。这是因为 iOS 系统会对证书进行严格的验证,确保连接的安全性。
2. Fiddler 的工作原理
接下来,我们需要了解一下 Fiddler 的工作原理。Fiddler 是一个代理工具,它通过在本地建立一个代理服务器,将设备与服务器之间的通信流量通过代理服务器中转,从而实现抓包分析的功能。
当我们在 iOS 设备上访问一个 HTTPS 网站时,设备会向服务器发送一个证书请求,服务器会将证书发送回设备。然而,由于我们使用了 Fiddler 代理,所以证书请求会被 Fiddler 截获,并且 Fiddler 会向设备发送一个自己生成的证书,而不是服务器的证书。这个自己生成的证书并没有被苹果认证,因此就会导致“苹果证书不可信”的提示。
3. 解决方法
针对“苹果证书不可信”的问题,我们可以使用以下两种解决方法:
方法一:信任 Fiddler 的证书
我们可以在 iOS 设备上添加 Fiddler 的证书,使其受到信任,从而避免“证书不可信”的提示。具体步骤如下:
1. 在 Fiddler 中,选择“Tools”->“Options”->“HTTPS”,勾选“Decrypt HTTPS traffic”,并点击“Actions”->“Export Root Certificate to Desktop”,将证书保存到桌面上。
2. 将证书发送到 iOS 设备上,可以通过邮件、AirDrop 等方式。
3. 在 iOS 设备上,打开邮件或 AirDrop 中的证书文件,并选择“安装证书”。
4. 在安装证书时,需要输入设备的密码。
5. 安装成功后,打开“设置”->“通用”->“关于本机”->“证书信任设置”,找到 Fiddler 的证书,并将其开关打开。
方法二:使用 Fiddler 的 HTTPS 解密功能
除了信任 Fiddler 的证书外,我们还可以使用 Fiddler 的 HTTPS 解密功能,避免“证书不可信”的提示。具体步骤如下:
1. 在 Fiddler 中,选择“Tools”->“Options”->“HTTPS”,勾选“Decrypt HTTPS traffic”。
2. 在 iOS 设备上,打开“设置”->“无线局域网”->“HTTP 代理”,将代理设置为 Fiddler 的 IP 地址和端口号。
3. 在 iOS 设备上,访问 HTTPS 网站时,会弹出一个提示框,询问是否信任 Fiddler 的证书。选择“信任”即可。
通过以上两种方法,我们就可以解决“苹果证书不可信”的问题,正常使用 Fiddler 进行抓包分析了。