如何从通过SCEP创建的iOS设备中删除证书/密钥

时间:2014-06-20 03:08:46

标签: ios mdm ota

作为测试SCEP服务器的一部分,我一直向我的iOS设备发送大量SCEP请求以创建RSA密钥对。

在注册过程中,某些CSR实际上已由SCEP服务器签名并返回设备。

但是,我想从设备中删除旧的密钥/证书以重新开始,因为设备中的证书列表太长(想象我经历了多少试用和错误步骤)。

问题是,其中一些证书不会显示在“设置/常规/配置文件”下。它们仅在我进入VPN条目并选择证书作为身份验证方法时显示。

问题:

有没有办法让iOS设备从其KeyChain中删除密钥/证书?

3 个答案:

答案 0 :(得分:1)

首先,这是一个有趣的问题。

我认为唯一的方法是擦除(擦除所有设置)。我不知道任何API,配置文件或MDM命令专门做那个。

我相信,这是iOS的错误。删除适当的配置文件后,应删除客户端证书。所以,你应该发布它。

答案 1 :(得分:1)

您是如何将发送到 iOS设备的?我很好奇。

通常,设备上的某些内容会生成SCEP请求并接收证书。

您看到的物品很可能都在钥匙串中。在这种情况下,只有添加它们的应用程序才能删除它们。如果是这种情况,这里有一个有用的链接:http://useyourloaf.com/blog/2010/03/29/simple-iphone-keychain-access.html

答案 2 :(得分:1)

最后,我想出了两个选项:

  1. 从设置/常规/重置/删除所有内容和设置执行设备的完全重置。非常具有破坏性,但会给你一个干净的开始。之后进行恢复也是不可能的,因为你会再次获得膨胀的钥匙串数据库。
  2. 如果你有一个越狱设备,做一些脑部手术!
  3. 在越狱设备上,可以使用Keychain Viewer application (version 0.4)来帮助完成此过程。以下是我的表现方式:

    1. 在iOS设备上安装Keychain Viewer(在本地下载.deb文件,转移到iOS设备,然后执行dpkg -i keychainviewer0.4_beta.deb
    2. 在iOS设备上安装sqlite3(apt-get install sqlite3)
    3. 在iOS设备上打开Keychain Viewer应用程序;从证书列表中,找到您要删除的证书。
    4. 请注意该项目的rowid
    5. 更改密钥链数据库文件权限,使其可写:chmod u+r /private/var/Keychains/keychain-2.db
    6. 在iOS设备上启动sqlite3命令行客户端:sqlite3 /private/var/Keychains/keychain-2.db
    7. 警告:以下线条是破坏性的!

      备份您的整个Keychains目录。更好的是,在你的情况发生错误的情况下为你的整个设备备份。

      继续自己的危险!

      1. DELETE FROM keys WHERE labl IN (SELECT DISTINCT(labl) FROM cert WHERE rowid=_row_id_you_want_);
      2. DELETE FROM cert WHERE rowid=_row_id_you_want_;
      3. 此版本的另一个版本基于您要删除的证书的颁发者。在这种情况下,您将执行以下操作:

        1. 再次从Keychain Viewer中,找到您要删除的证书的rowid
        2. 在sqlite3中执行以下所有命令:
        3. SELECT quote(issr) FROM cert WHERE rowid=_row_id_you_want_;
        4. 这将为您提供如下内容:X'F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0'这是存储在Keychain DB中的发行者名称的二进制blob的十六进制表示法(我认为这是加密形式)。 / LI>
        5. DELETE FROM keys WHERE labl in (SELECT DISTINCT(labl) FROM cert WHERE issr=X'F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0');
        6. DELETE FROM cert WHERE issr=X'F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0');