98

我的 API 端点有一个自签名证书。我正在尝试使用模拟器测试一些东西,但得到“不受信任的服务器证书”。

我曾尝试在模拟器上使用 safari 来下载 .crt 文件,但这似乎不起作用。

iPhone Simulator 从哪里获得钥匙串?如何添加受信任的证书以便我的应用程序可以正常工作?

更新

我通过创建 CA 然后使用 iPhone 配置工具添加 CA 证书来使其工作。然后我能够在 API 服务器上获得由该 CA 证书签名的证书,并且 NSConnection 刚刚工作。由于某种原因,我无法使用自签名证书使其工作。我需要使用配置软件重新尝试。

我真正的问题是如何让它在模拟器上工作?我认为模拟器使用实际计算机的钥匙串。

4

9 回答 9

120

仅供参考,如果有人仍然遇到这个问题:

只需将您的 .cer 文件拖放到正在运行的模拟器窗口中即可。您会看到 Safari 闪烁,然后是您的证书(或证书颁发机构)的导入对话框...

为 iOS 7 模拟器工作(我认为也为 iOS 6 工作)。

于 2013-11-18T12:29:41.487 回答
47

对于那些发现在模拟器上拖放证书不起作用的人,最近有一个更改增加了一个额外的步骤

必须明确告知模拟器信任根 CA。通过以下方式执行此操作:

常规 -> 关于 -> 证书信任设置 -> 为您的特定证书“启用根证书的完全信任”

在此处查看完整答案

于 2017-05-09T18:19:48.067 回答
23

几个月来我遇到了同样的问题,今天我终于解决了:

ADV信任商店

您将要使用来自 github的名为ADVTrustStore的项目。它做了一些花哨的魔法,但它会正确地将证书安装到模拟器上的根信任库中。

安装自定义证书的步骤

# Clone the repo
git clone https://github.com/ADVTOOLS/ADVTrustStore.git

# Enter the repo directory
cd ADVTrustStore/

# Copy your .crt file 
cp somewhere/something.crt my.crt

# conver to a .pem file
openssl x509 -in my.crt -out my.pem -outform PEM

# Install the pem in the simulators
./iosCertTrustManager.py -a my.pem

使用此过程,我能够在企业防火墙后面使用带有自签名证书的 SSL 重新签名让 GoogleStreetView 图像正确呈现

背景

我正在使用 CharlesProxy,我注意到它正在将证书正确地安装到模拟器中,但它们没有显示在设置 - 配置文件部分。然后经过一番搜索,我发现了这个工具。可能还有其他一些工具,但就我而言,拖放在所有情况下都无法正常工作。Safari 会很好,但不是我的应用程序。

于 2017-09-08T16:34:57.607 回答
13

对于任何使用 OS X Catalina 的人,请查看:https ://forums.developer.apple.com/thread/124056 。

Catalina 当前阻止访问 Desktop、Documents 和 Downloads 文件夹。我将证书文件移动到共享文件夹,然后将文件从那里拖放到模拟器。

于 2020-01-31T10:38:20.803 回答
9

看看 Charles 用来将他们的自签名证书安装到模拟器的钥匙串中的 shell 脚本。http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

也可以看看:

看起来在模拟器中安装您自己的证书可能需要通过 Safari 将其安装在设备上,然后将结果行从设备复制TrustStore.sqlite3到模拟器中。

于 2012-09-12T16:23:35.307 回答
5

拖放过去可以工作,但对我来说在 XCode 12 上不起作用。对我有用的是在模拟器上打开 Safari 浏览器,然后输入 .crt 证书文件的文件 URL。前任。

file:///Users/[folder_path]/[certificate.crt]

之后,您必须转到 Simulator Settings 并通过导航到 General > Profiles 部分来安装证书。

于 2020-12-31T06:11:54.043 回答
3

对于IOS14,拖拽后需要进入:

General -> Profile -> select you profile -> install

接着:

General -> About -> Certificate Trust Settings -> "Enable Full Trust for Root Certificate" for your particular certificate

另请参阅https://developer.apple.com/library/archive/qa/qa1948/_index.html

于 2021-02-24T02:42:42.077 回答
2

使用iPhone Backup Extractor,我将我的 iPhone 复制TrustStore.sqlite3~/Library/Application Support/iPhone Simulator/6.0/Library/Keychains,覆盖现有文件。我试图只用下面的 sqlite 插入一行,但我无法让它工作。

sqlite3 ~/backup/iOS\ Files/TrustStore.sqlite3
sqlite3>.mode insert
sqlite3>.output working.sql
sqlite3>select * from tsettings;
sqlite3>.quit

现在,working.sql有了 tsettings 表的全部内容(在我的例子中,1 行)。

sqlite3 ~/Library/Application\ Support/iPhone\ Simulator/6.0/Library/Keychains/TrustStore.sqlite3
sqlite3>INSERT INTO tsettings VALUES(X'...
sqlite3>.quit

同样,上面的 sqlite 命令对我不起作用,但对其他人来说可能是一个很好的起点。将整个TrustStore.sqlite3备份从备份复制到模拟器中工作得很好。

于 2012-12-17T22:41:18.387 回答
1

看看iostrustRuby gem:http: //github.com/yageek/iostrust

于 2015-04-16T19:38:07.083 回答