iCloud 是个神奇的东西,给予 iOS 便捷云备份的同时,也存在证书描述文件不备份却单独备份证书的情况。
在 iOS 中使用 Surge、Thor 等抓包 App 难免会生成并安装 SSL 证书用以解密 HTTPS,从而导致了 iCloud 在新手机恢复旧机备份时, 设置 > 通用 > 关于本机 > 证书信任设置
中存在未删除的旧证书,同时由于缺少对应的描述文件,导致无法删除、无法使用的尴尬。
证书信任设置:
描述文件:
macOS 解决方案(推荐,快、易)
一顿找寻之后就指向了这样一个解决方案,整体思路就是从备份文件中导出存储证书的 sqlite3
文件,使用脚本恢复对应的 crt
证书文件(可能是多个),之后重新安装证书,恢复描述文件并覆盖证书,最后删除不再使用的证书描述文件 设置 > 通用 > 描述文件
,完成残余证书的删除操作,抄录教程如下:
- 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
shell./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"
在第三步中使用 GitHub 中的开源项目 ADVTrustStore 完成证书的导出,在 Windows 下并不能顺利执行,仅支持 macOS 下运行,。
Windows 解决方案
既然已经确认 TrustStore.sqlite3
就是存储信任证书的备份文件,那么只要在Windows下打开 sqlite3
文件并导出相应证书,重装再删除即可。
在 Windows 下可通过安装 DB Browser(SQLite) 打开并导出对应证书。
注意,图中每一行为一张证书的信息,有几行就需要导出几次,导出文件的后缀需要自行修改成 .crt
。
之后就只需要按照步骤再安装删除即可。