Charles 配置安卓手机

首先需要注意的就是证书的有效时间,过期的证书会导致网络连接失败

安卓配置证书后如果出现“网络不是私密连接”等问题可以参考如下文章:

http://www.cnblogs.com/takechiyo/p/15682433.html

为防止原文实效,现保存如下,著作权仍归原作者所有,转载请注明出处。

请求抓包对于程序员调试代码必不可少,Charles是一个用于抓包的好工具(也可以使用Fiddler),Charles抓包是通过中间人代理实现,在客户端和服务端通信时,Charles会截取客户端发送给服务端的请求,然后伪装成客户端与服务端进行通信,服务端返回数据时,Charles会截取数据伪装成服务端将数据发送给客户端。

Charles的安装和配置

Charles的安装比较简单,根据应用安装过程的提示,安装即可,不再赘述。主要讲一下Charles手机抓包的配置。

  1. 首先保证需要抓包的手机和安装Charles的电脑在同一个局域网之中(比如,使用同一个WiFi)。

  2. 打开Charles,点击Proxy-Proxy Settings,设置端口,Charles会占用该端口启动一个服务。勾选Support HTTP/2

  3. 配置手机代理,点开手机连接wifi的高级选项,代理设置为手动,填写IP和端口,端口即为上一步骤中设置的端口,如8888. IP地址为安装Charles电脑的地址,可通过ipconfig命令查询。

    https://img2020.cnblogs.com/blog/691348/202112/691348-20211213111626823-1085248146.png

  4. 给电脑安装Charles证书,否则打开Charles后电脑浏览器不能正常上网。(原因是Charles伪装成中间人,浏览器不信任Charles的证书,报错“您的连接不是私密连接”)

    打开Charles,Help-SSL Proxying-Install Charles Root Certificate

    具体安装过程可参考Charles根证书安装

  5. 手机安装Charles根证书

    如果需要抓包HTTPS请求并解密,需要在手机上安装Charles根证书,以让手机信任Charles。

    • 打开手机浏览器,输入http://chls.pro/ssl下载charles证书。
    • 打开手机设置-安全与隐私-加密与凭据-从存储设备安装,选择下载的证书文件安装即可。

Charles手机证书配置

一般按照上述小节配置就可以实现对HTTPS请求的抓包和数据解密。但是Android 7版本及以上的系统,不再信任用户级的证书,只信任系统级的证书。即便是按照上述操作安装了Charles的根证书,发现HTTPS请求也无法正常解析,会有Unknown报错,Charles的Note会提示You may need to configure your browser or application to trust the Ch.

此类场景,需要给Android7及以上的手机安装系统级证书,来实现HTTPS的抓包。

准备工作

  • 需要抓包的手机已完成Root。
  • 需要安装好Openssl工具(可以在Linux服务器上完成,或者是通过win10的WSL来操作)
  • adb工具(下载地址

生成证书

  1. 将通过http://chls.pro/ssl下载的证书(一般后缀为.pem)上传到安装有openssl的机器上。如果是在手机上下载的证书,则默认的下载路径为/sdcard/Download/

  2. 若证书格式为非.pem结尾,则需要先转换为pem (不确定该做法是否正确)
    以下代码为.crt格式转为.pem
    openssl x509 -in tmp.crt -out tmp.pem

  3. 执行openssl命令重命名证书名称

    openssl x509 -inform PEM -subject_hash -in xxx.pem  # 此处xxx替换为具体的名称
    
    

    该命令会输出一个签名,找到其中的hash值进行复制。如下文中的2598f6a3

    2598f6a3
    -----BEGIN CERTIFICATE-----
    MIIFRjCCBC6gAwIBAgIGAX2jljHLMA0GCSqGSIb3DQEBCwUAMIGnMTgwNgYDVQQD
    DC9DaGFybGVzIFByb3h5IENBICgxMCBEZWMgMjAyMSwgTEFQVE9QLU1CNFIyUTJF
    KTElMCMGA1UECwwcaHR0cHM6Ly9jaGFybGVzcHJveHkuY29tL3NzbDERMA8GA1UE
    CgwIWEs3MiBMdGQxETAPBgNVBAcMCEF1Y2tsYW5kMREwDwYDVQQIDAhBdWNrbGFu
    ZDELMAkGA1UEBhMCTlowHhcNMjExMjA5MDkwNDI5WhcNMjIxMjA5MDkwNDI5WjCB
    pzE4MDYGA1UEAwwvQ2hhcmxlcyBQcm94eSBDQSAoMTAgRGVjIDIwMjEsIExBUFRP
    UC1NQjRSMlEyRSkxJTAjBgNVBAsMHGh0dHBzOi8vY2hhcmxlc3Byb3h5LmNvbS9z
    c2wxETAPBgNVBAoMCFhLNzIgTHRkMREwDwYDVQQHDAhBdWNrbGFuZDERMA8GA1UE
    CAwIQXVja2xhbmQxCzAJBgNVBAYTAk5aMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
    MIIBCgKCAQEArcxNxm3EhvWl7Jk8H5otzU/ElTJivzMfALft45ghGam6Ds0utF0S
    AgRvfmC7/KtxWnTzokc9ewA440CBe23QvfmJcRVqaJBjvS40MT3y2fWS8BNNgZlS
    QE4bnUexIdfVWzYXoo80P/mKDSxfTbc+3PPYfUDXDR99GDZKLcZfgMeRkAAEReaj
    qzjjeDDGj/DEVRZZQeXfESTs/tGaruupzqIENqToLMSQSwTDpIaApEz76Lf5qAP3
    XAUnpTnz5E+5n1WRV9oRxBKYVILDrTyejzwh9Koh25gij31knDCGioHqXVbwfg81
    3cSlVj79BMjcuGRPwo5rpfzyYV9w5YVaEQIDAQABo4IBdDCCAXAwDwYDVR0TAQH/
    BAUwAwEB/zCCASwGCWCGSAGG+EIBDQSCAR0TggEZVGhpcyBSb290IGNlcnRpZmlj
    YXRlIHdhcyBnZW5lcmF0ZWQgYnkgQ2hhcmxlcyBQcm94eSBmb3IgU1NMIFByb3h5
    aW5nLiBJZiB0aGlzIGNlcnRpZmljYXRlIGlzIHBhcnQgb2YgYSBjZXJ0aWZpY2F0
    ZSBjaGFpbiwgdGhpcyBtZWFucyB0aGF0IHlvdSdyZSBicm93c2luZyB0aHJvdWdo
    IENoYXJsZXMgUHJveHkgd2l0aCBTU0wgUHJveHlpbmcgZW5hYmxlZCBmb3IgdGhp
    cyB3ZWJzaXRlLiBQbGVhc2Ugc2VlIGh0dHA6Ly9jaGFybGVzcHJveHkuY29tL3Nz
    bCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4wDgYDVR0PAQH/BAQDAgIEMB0GA1UdDgQW
    BBQa42h5Cgu4cdr8ij3pnqk8RuHt7DANBgkqhkiG9w0BAQsFAAOCAQEAEvocaQrm
    ZxTnSGueTjmsMlDppnfi84pOma9+IY0cKALJOtSCG01WvEzoxd6rXDrMNGRVG6Zd
    SrkpJTnKp/9L3NAcwX/S1Gt5a18gI0wMCMGfoFYcAA2xvIbOF0UTCi17tTPK4ltQ
    Bb0IPDUmLzP7yvHspCT+UEE/2B2wgmFiB4RIA01O8eQpSMAlzEfLdpwJwGfFIaWn
    GpcVotgQRvmOJRBV/fN3AfjOI5sGjSx2/ExW+vbUu98u6PHs1HleVslNDY1o+rE+
    qxkQCLIhIoCD1rp8AE1L7OS8iGTju9oT99F/YV21QvtKWJ9YpsgWM14qzv9MzLQ6
    N+oMxISSpEr47Q==
    -----END CERTIFICATE-----
    
    

    重命名证书文件。

    mv xxx.pem 2598f6a3.0   # 2598f6a3为上步中的hash值
    
    
  4. 使用Adb工具将后缀为0的证书上传到手机/system/etc/security/cacerts/目录下。

    通过数据线将手机连接到电脑上,并打开开发者调试。

    将上述后缀为0的证书文件放在adb工具的安装目录下,打开windows终端(windows+R 输入 cmd)

    执行

    # 将证书上传到手机上
    adb push 2598f6a3.0 /sdcard/Download
    adb shell
    su
    # 将证书复制到/system/etc/security/cacerts/
    cp /sdcard/Download/2598f6a3.0 /system/etc/security/cacerts/
    # 修改证书权限
    chmod 644 /system/etc/security/cacerts/2598f6a3.0
    
    

    如果执行cp命令时出现Read-only file system错误,需要将system挂载为可读写。执行命令:

    mount -o rw,remount /system
    
    

    如果执行该命令报错mount -o rw,remount /system /system’ not in /proc/mounts,执行下一条命令,简单粗暴解决。

    mount -o rw,remount /
    chmod 777 /system
    mount -o rw,remount /system
    
    

    然后继续执行cp命令

    如果此方法还是不行,则需要安装magisk中的adb root模块,请注意:原始版本的adb_root压缩包有检测不到手机的bug,请安装作者修复后的版本。链接如下:https://github.com/evdenis/adb_root/issues/11#issuecomment-914595084

  5. 重启手机,即可对HTTPS完成数据抓包和解密。

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值