之前用Shadowrocket的HTTPS解密需要导入证书功能,但是换iPhone X的时候,恢复备份之后发现证书所依赖的描述文件没有被恢复过来,但是信任证书居然还残留在里面删不掉,虽说忽略掉不打开信任开关也没问题,但是比较还是会逼死强迫症的。翻查网络和询问作者都一直误解,终于今天在Telegram上面Shadowrocket的作者推送了这个链接,问题终于得到了解决!
With iOS, certificates are installed as part of profiles. Deleting a certificate means removing the profile.
When an iPhone with profiles is backed up, and then the backup is restored to a new device, the profiles are no longer visible under Settings > General > Profiles. So, they can’t be deleted via the usual way.
The certificates however get restored to the device. One can see them e.g. under Settings > General > About > Certificate Trust Settings.
Hence my question: How can these certificates be deleted from the device?
I found a certificate in my iOS device’s Certificate Trust Settings. And it was not be found in Profiles. Finally I remove it by add the cert file again, and then I can found and remove it in Profiles.
At first, I can’t found the cert file, because this CA was installed years ago. So I did these things:
Backup iPhone to Mac, View backup file by some software (I used iMazing)
Find TrustStore.sqlite3 in Backup/KeychainDomain/ and export it to HOME DIR.
Use this project https://github.com/ADVTOOLS/ADVTrustStore to export certfile./iosCertTrustManager.py -t ~/TrustStore.sqlite3 -e ~/foo.crt
Airdrop or Email this crt file to iOS device, and install it.
Find it in Settings > General > Profiles and Remove it.
It disappear in “Certificate Trust Settings”
Done.
GitHub上面的这个ADVTrustStore工程居然还有在更新,有鉴于此,我把我到2021年7月1日还能用(实测可以解开iOS 14.6备份的TrustStore.sqlite3文件)的旧版本打包在这里吧。
其实只需要在“通用-关于-描述文件”里面删除了相关文件,证书也就跟着一起删除了。
有没有看原文,原文就说描述文件没了的情况下删除证书,牛头不对马嘴
楼上的那个只是最通常的做法,我这个问题是描述文件丢失,但是信任证书还在,因为常规做法是通过删除描述文件一并删除的,但是因为没有描述文件作为操作入口,所以只能通过上述非常规办法来删除这种残留证书。
你好 请问windows怎么运行iosCertTrustManager.py 呢?
装个python环境就好了
非常感谢。我也是备份iphone 然后证书找不到 但是能信任。
终于治好了强迫症!
14.4怎么操作
怎么操作的?这个说明不是很明白
已成功,非常感谢
非常感谢,已经删除了。但是用github上最新的.py文件会报错,要使用旧版本的。
我在本文最后补充了能用版本的打包下载
20210624
查看TrustStore.sqlite3 ,此文件上次修改时间为2020年。
取出证书后发现取出的证书都是旧文件,甚至不包括当前正在用的证书。
(删了旧备份,刚刚进行的新备份)
请问博主有这种情况吗?我用这个方法删不掉想删的证书……
修改日期应该是算你上次生成证书进去的时间,不是你写备份文件的时间。
执行那个python的时候,应该就是从这个sqlite文件里面依次读取里面包含的证书,选择Yes的话生成对应的profile了。 至于你的TrustStore.sqlite3为什么没有找到,这个我就不是很清楚情况了。我刚刚试验了一下我自己的备份没有问题。
最主要iMazing是收费软件吧,网上看不到x版的。
买个正版license又不贵,毕竟这东西真心好用
感谢,在mac上成功删除残留的证书。
要注意的是隔空投送时描述文件一次要发一个。
这里有个链接对像我一样的小白更友好。
https://josta.me/blog/201802/remove_certificate_in_ios/
你好,我在执行导出命令时是这样的,求助:
yangyong@fengfeng ~ % python3 iosCertTrustManager.py -t ~/TrustStore.sqlite3 -e ~/foo.crt
File “/Users/yangyong/iosCertTrustManager.py”, line 281
length = 0L
^
SyntaxError: invalid decimal literal
这段代码的作者应该是用Python2写的,所以你将Python环境从3换成2.7看看吧。
麻烦问解决了吗,我也是同样的问题
你好大佬~
我是 14.6 机器已经越狱了,请问 sqlite3 这个文件位于手机哪个目录呀
我直接提取比较快一些
我好久没越狱,具体路径不晓得了,应该是/var/KeychainDomain吧(可能),既然越狱了,用相应的文件管理器工具全局搜一下这个sqlite文件应该也能搜到的
发现这个更加简单,通过DB Browser软件可视化导出证书文件。ADVTOOLS命令行还是不方便。链接地址:https://www.jinbo123.com/7739.html
实测iOS 16.3系统用此方法仍然可以。iMazing免费版可以导出,macOS Monterey需要安装python 2.7。
实测16.3系统仍然可以用这个方法