【问题标题】:iPhone TrustStore CA certificatesiPhone TrustStore CA 证书
【发布时间】:2010-09-25 18:00:27
【问题描述】:

你们中有人知道如何更改Security.framework/TrustStore.sqlite3 的内容吗?似乎 iPhone 使用它来存储受信任的 CA 证书。我真的希望我的 iPod touch 信任我的自定义证书。除此之外,你们中是否有人知道一个应用程序(win32)来编辑 sqlite3 数据库文件(除了 sqliteman,这个总是对我崩溃)。

【问题讨论】:

    标签: iphone certificate x509


    【解决方案1】:

    您可以使用iPhone Configuration Utility 来安装证书。

    【讨论】:

      【解决方案2】:

      对于您问题的第二部分,我使用 Firefox 的 SQLite 扩展来创建和编辑 sqlite db 文件。

      addons.mozilla.org

      【讨论】:

        【解决方案3】:

        如果您将网络服务器配置为提供具有正确 mime 类型的数字证书,则 iPhone 上的 Safari 会将它们添加到信任存储区。

        CA 证书的 mime-type 是“application/x-x509-ca-cert”(例如 here

        当 safari 下载此证书时,如果用户想要信任它,它将作为用户。

        一旦受信任,它就会出现在设置 |一般 |配置文件部分作为配置文件。

        alt text http://o-regan.org/cacert.png

        证书也被插入到 TrustStore.sqlite3 数据库中。通过使用iphone backup extractor 进行备份和提取数据库来验证这一点。

        我不确定现在这是否意味着它被信任用于其他目的,比如作为 SSL 根。

        希望这会有所帮助,如果时间允许,我可能会进行更多调查。

        【讨论】:

        • application/x-x509-ca-cert/etc/mime.types 中的默认扩展名是.crt
        【解决方案4】:

        我可以想象其他人会遇到这个问题,因此我想回答它是如何工作的(Apple 不希望看到):

        1st) iPhoneOS 信任存储在 /System/Library/Frameworks/Security.framework/TrustStore.sqlite3 中的每个 CA 证书

        2nd)该数据库中的某些字段包含我不理解的数据,而其他诸如“SHA1”之类的含义非常明显。

        3rd) 在你的 iPod/iPhone 上有两个不同的 TrustStore.sqlite3s。第二个位于 /private/var/Keychains/TrustStore.sqlite3。它们之间的唯一区别是 Apple 只信任 Security.framework 中的内容。

        4th) 后者用于存储用户安装的证书(谢谢,koregan),而表格布局是一样的。

        5th) 使用 Mail 或 Safari 打开您的自签名证书并安装它。

        6th) 使用您最喜欢的 SQLite 数据库管理器打开 /private/var/Keychains/TrustStore.sqlite3 并在 tsettings 中查找“SHA1”BLOB 包含您的 CA 证书哈希的行。

        7th) 提取整行并将其插入到 TrustStore.sqlite3 的 tsettings 表中。

        8) 确保您已将数据库复制回设备,然后重新启动它。

        9th) 现在它应该完全信任那些由您的自定义 CA 签名的证书。

        【讨论】:

        • 感谢您,这是您在模拟器上开发时的ONLY 选项。使用配置实用程序仅适用于物理设备。
        • 从头开始,配置模拟器对我来说是个死胡同。
        • 配置实用程序不会设置您自己的root ca 受信任。
        • CA 证书不再存储在 /System/Library/Frameworks/Security.framework/TrustStore.sqlite3 中。有人知道新地方吗?
        • 您如何访问所有这些文件?
        【解决方案5】:

        自 iOS 11 起,TrustStore 位于:/System/Library/Security/Certificates.bundle,而不是通常的位置:/System/Library/Frameworks/Security.framework

        【讨论】:

          【解决方案6】:

          在 iOS 13(模拟器或手机/平板电脑)中安装您自己的 CA 证书

          1. 将您的 CA 证书放在网站上,确保其具有 .crt 扩展名(如 MyCA.crt)。
          2. 在模拟器中转到 Safari
          3. 下载证书,出现提示时选择“是”安装“配置文件”
          4. 进入模拟器中的设置 常规 > 个人资料 > [您的证书] 并点击安装
          5. 进入模拟器中的设置 常规 > 信息 > 可信证书 找到您的证书并将开关切换到开启。

          您的 CA 现在是受信任的。在旧版本的模拟器中,您可以将证书拖到模拟器上,但这似乎不再起作用。

          请记住,Apple 会限制您的证书的验证期限,因此不要让它们的有效期为 10 年,而是选择更短的时间。

          如果您在第一步失败,那么这可能是因为您的网络服务器无法识别 .crt 扩展名。像 Apache 这样的常见 Web 服务器应该可以正常工作。

          • @Apple:我希望模拟器中的开发人员选项中的设置只接受不安全的证书,但老实说,多年来第一次在 iOS 上安装自己的 CA 的过程比在 Android 10 上更容易(AFAIK)!

          【讨论】:

          • 是否也需要安装中间证书?
          • 是的,简单的方法是将您的 crt 和密钥文件连接到一个 pem 中: cat mycert.key mycert.crt > mycert.pem 请记住,对于 iOS / OSX,您的证书可能具有有限的有效性(所以不要'不使用 10 年,而是使用 1 年)。
          猜你喜欢
          • 2020-03-19
          • 1970-01-01
          • 2011-02-15
          • 2016-08-05
          • 2012-04-10
          • 1970-01-01
          • 2019-05-25
          • 2014-09-24
          • 2021-01-17
          相关资源
          最近更新 更多