【发布时间】:2019-09-18 13:16:54
【问题描述】:
我已将安卓手机(三星 Galaxy S8)配置为使用代理。我可以连接到 mitm.it。我还可以看到 Mitmproxy 捕获的一些请求。
但是,当我尝试在 Google 中搜索任何内容时,我没有互联网连接。
关于发生了什么以及如何解决它的任何提示?
【问题讨论】:
我已将安卓手机(三星 Galaxy S8)配置为使用代理。我可以连接到 mitm.it。我还可以看到 Mitmproxy 捕获的一些请求。
但是,当我尝试在 Google 中搜索任何内容时,我没有互联网连接。
关于发生了什么以及如何解决它的任何提示?
【问题讨论】:
Android 7.1 及更高版本do not longer allow the use of custom certificates manually added by the user,但如果您的手机具有超级用户访问权限,则可以通过 ADB 使其工作。
Android 将其系统证书存储在/system/etc/security/cacerts/ 中。如果您查看您的设备,您会看到证书具有散列名称,例如。 “a1234b0d.0”。要拦截应用流量,您需要找出证书的哈希
openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.pem | head -1
然后相应地重命名您的证书
mv mitmproxy-ca-cert.pem <your_hash_value_in_here_without_carets>.0
最后将其移至设备系统证书所在的位置。但是,为此,您需要先重新挂载系统目录才能获得写入权限
adb shell su -c "mount -o rw,remount,rw /system"
adb push your_certificate /sdcard/your_certificate
adb shell su -c "mv /sdcard/your_certificate /system/etc/security/cacerts/your_certificate"
adb shell su -c "chmod 644 /system/etc/security/cacerts/your_certificate"
adb reboot
如果这不起作用,我记得(但不是来源)阅读有关 Android Nougat 的信息也没有关于 2 年以上过期的证书。 mitmproxy 创建的证书应该没问题。不过,Burpsuite 或 Fiddler 对我不起作用。
【讨论】:
Google Apps 使用 certificate pinning,因此它可以检测到您下载到手机的“假”http://mitm.it/cert/pem。
【讨论】: