set -e # Fail on error
# Create a separate temp directory, to hold the current certificates
# Without this, when we add the mount we can't read the current certs anymore.
mkdir -m 700 /data/local/tmp/htk-ca-copy
# Copy out the existing certificates
cp /system/etc/security/cacerts/* /data/local/tmp/htk-ca-copy/
# Create the in-memory mount on top of the system certs folder
mount -t tmpfs tmpfs /system/etc/security/cacerts
# Copy the existing certs back into the tmpfs mount, so we keep trusting them
mv /data/local/tmp/htk-ca-copy/* /system/etc/security/cacerts/
# Copy our new cert in, so we trust that too
mv ${certificatePath} /system/etc/security/cacerts/
# Update the perms & selinux context labels, so everything is as readable as before
chown root:root /system/etc/security/cacerts/*
chmod 644 /system/etc/security/cacerts/*
chcon u:object_r:system_file:s0 /system/etc/security/cacerts/*
# Delete the temp cert directory & this script itself
rm -r /data/local/tmp/htk-ca-copy
rm ${injectionScriptPath}
echo "System cert successfully injected"
7条答案
按热度按时间fumotvh31#
我想出了一个方法来做到这一点,因此我能够信任查尔斯代理证书。它将被添加为可信的SSL根证书。
首先,您需要获取证书哈希
我使用windows,将其存储在一个var中,以自动化该过程
这是从this answer复制的unix版本:
iklwldmw2#
感谢这个答案通过ADB安装用户证书,我能够改编一个脚本,在bash shell上工作:
(Yes,我知道这可能应该是一个评论,但我还没有足够的声誉张贴它作为一个评论)
iqjalb3h3#
我可以通过以下步骤使servercert显示在
Trusted Credential -> User
选项卡下(而不是其他答案显示的system选项卡下):qq24tv8q4#
将文件推送到设备
启动证书安装程序
现在完成安装,提示符将出现在您的设备上。
wixjitnu5#
详情如下:www.example.comhttps://httptoolkit.tech/blog/intercepting-android-https/#injecting-ca-certificates-into-rooted-devices
来源
3bygqnnd6#
在我的例子中,我首先需要以可写方式启动模拟器:
然后您可以安装证书:
https://docs.mitmproxy.org/stable/howto-install-system-trusted-ca-android
mfuanj7w7#
这只会在一个非root的android上启动“你想信任这个证书吗”窗口,这是@hoghart45的回答,除了一行确保你有权限将证书粘贴到
/data/local/..
目录:为了完整起见,here是一个WIP Python项目WIP,它也使用
uiautomator
以受控的方式自动单击“OK”。(它在单击之前验证它是确定按钮,它不只是发送一个盲目的输入,像send keyevent 20
命令)。免责声明,我参与了该项目。