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

问题描述 投票:67回答:6

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

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

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

UPDATE

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

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

iphone ssl ios-simulator keychain pki
6个回答
94
投票

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

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

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


31
投票

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

必须明确告知模拟器信任根CA.这样做是为了:

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

full answer here


12
投票

我有几个月同样的问题,今天我最终用以下方法解决了这个问题:

ADVTrustStore

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

Steps to install a custom cert

# 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会很好但不是我的应用程序。


9
投票

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

也可以看看:

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


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从备份复制到模拟器中工作得很好。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.