在应用程序的钥匙串中使用自签名证书的HTTPS

时间:2010-01-13 13:00:28

标签: iphone keychain self-signed

我必须通过HTTPS将我的iPhone应用程序连接到具有自签名证书的服务器。我无法更改证书或服务器。

由于我不想接受所有自签名证书,仅此一项,我的想法是将证书导入应用程序密钥链(从文件中读取证书并使用SecItemAdd将其添加到密钥链中)。

如果我在模拟器中运行应用程序,安装证书,然后搜索密钥链(使用SecItemCopyMatching),找到证书,但连接仍然失败并带有“不受信任的服务器证书” 错误。

这是模拟器或我的应用程序的问题吗?我还需要做其他事吗?或者我可以假设,如果我将证书添加到真实设备上的钥匙串,那么连接到服务器将成功(我正在使用NSURLConnection.sendSynchronousRequest)?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以使用ASIHTTPRequest库。它允许通过将validatesSecureCertificate对象的ASIHTTPRequest属性设置为NO来忽略证书验证。

答案 1 :(得分:1)

这应该在模拟器中有一些注意事项,请参阅Apple示例代码示例“AdvancedURLConnections”。