3

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

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

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

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

谢谢你的帮助!

4

2 回答 2

2

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

于 2010-01-13T13:22:45.350 回答
1

这应该在模拟器中工作,但有一些警告,请参阅 Apple 示例代码示例“AdvancedURLConnections”。

于 2011-03-23T09:26:25.887 回答