作为测试SCEP服务器的一部分,我一直向我的iOS设备发送大量SCEP请求以创建RSA密钥对。
在注册过程中,某些CSR实际上已由SCEP服务器签名并返回设备。
但是,我想从设备中删除旧的密钥/证书以重新开始,因为设备中的证书列表太长(想象我经历了多少试用和错误步骤)。
问题是,其中一些证书不会显示在“设置/常规/配置文件”下。它们仅在我进入VPN条目并选择证书作为身份验证方法时显示。
问题:
有没有办法让iOS设备从其KeyChain中删除密钥/证书?
答案 0 :(得分:1)
首先,这是一个有趣的问题。
我认为唯一的方法是擦除(擦除所有设置)。我不知道任何API,配置文件或MDM命令专门做那个。
我相信,这是iOS的错误。删除适当的配置文件后,应删除客户端证书。所以,你应该发布它。
答案 1 :(得分:1)
您是如何将发送到 iOS设备的?我很好奇。
通常,设备上的某些内容会生成SCEP请求并接收证书。
您看到的物品很可能都在钥匙串中。在这种情况下,只有添加它们的应用程序才能删除它们。如果是这种情况,这里有一个有用的链接:http://useyourloaf.com/blog/2010/03/29/simple-iphone-keychain-access.html
答案 2 :(得分:1)
最后,我想出了两个选项:
在越狱设备上,可以使用Keychain Viewer application (version 0.4)来帮助完成此过程。以下是我的表现方式:
dpkg -i keychainviewer0.4_beta.deb
)rowid
。chmod u+r /private/var/Keychains/keychain-2.db
sqlite3 /private/var/Keychains/keychain-2.db
警告:以下线条是破坏性的!
备份您的整个Keychains
目录。更好的是,在你的情况发生错误的情况下为你的整个设备备份。
继续自己的危险!
DELETE FROM keys WHERE labl IN (SELECT DISTINCT(labl) FROM cert WHERE rowid=_row_id_you_want_);
DELETE FROM cert WHERE rowid=_row_id_you_want_;
此版本的另一个版本基于您要删除的证书的颁发者。在这种情况下,您将执行以下操作:
rowid
。SELECT quote(issr) FROM cert WHERE rowid=_row_id_you_want_;
X'F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0'
这是存储在Keychain DB中的发行者名称的二进制blob的十六进制表示法(我认为这是加密形式)。 / LI>
DELETE FROM keys WHERE labl in (SELECT DISTINCT(labl) FROM cert WHERE issr=X'F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0');
DELETE FROM cert WHERE issr=X'F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0');