我必须通过HTTPS将我的iPhone应用程序连接到具有自签名证书的服务器。我无法更改证书或服务器。
由于我不想接受所有自签名证书,仅此一项,我的想法是将证书导入应用程序密钥链(从文件中读取证书并使用SecItemAdd
将其添加到密钥链中)。
如果我在模拟器中运行应用程序,安装证书,然后搜索密钥链(使用SecItemCopyMatching
),找到证书,但连接仍然失败并带有“不受信任的服务器证书” 错误。
这是模拟器或我的应用程序的问题吗?我还需要做其他事吗?或者我可以假设,如果我将证书添加到真实设备上的钥匙串,那么连接到服务器将成功(我正在使用NSURLConnection.sendSynchronousRequest
)?
感谢您的帮助!
答案 0 :(得分:2)
您可以使用ASIHTTPRequest库。它允许通过将validatesSecureCertificate
对象的ASIHTTPRequest
属性设置为NO
来忽略证书验证。
答案 1 :(得分:1)
这应该在模拟器中有一些注意事项,请参阅Apple示例代码示例“AdvancedURLConnections”。