将自签名证书添加到iphone Simulator?

时间:2010-02-08 05:12:04

标签: iphone ssl ios-simulator keychain pki

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

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

iPhone模拟器从哪里获取钥匙串?如何添加可信证书以使我的应用程序正常运行?

更新

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

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

9 个答案:

答案 0 :(得分:97)

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

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

为iOS 7模拟器工作(我认为它也适用于iOS 6)。

答案 1 :(得分:31)

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

必须明确告知模拟器信任根CA.通过转到:

来做到这一点
  

一般 - >关于 - >证书信任设置 - > "为根证书启用完全信任"为您的特定证书

请参阅full answer here

答案 2 :(得分:12)

我有几个月同样的问题,今天我最终解决了它:

ADVTrustStore

您将要使用来自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会很好但不是我的应用程序。

答案 3 :(得分:10)

对于使用OS X Catalina的任何人,请检查以下内容:https://forums.developer.apple.com/thread/124056

Catalina当前禁止访问“桌面”,“文档和下载”文件夹。 我将证书文件移动到“共享”文件夹,然后将文件从那里拖放到模拟器。

答案 4 :(得分:9)

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

另见:

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

答案 5 :(得分:4)

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

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

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

答案 6 :(得分: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

答案 7 :(得分: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复制到模拟器中工作得很好。

答案 8 :(得分:0)

看一下iostrust Ruby gem:http://github.com/yageek/iostrust