Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 应用程序中具有自签名证书的HTTPS';s钥匙链_Iphone_Keychain_Self Signed - Fatal编程技术网

Iphone 应用程序中具有自签名证书的HTTPS';s钥匙链

Iphone 应用程序中具有自签名证书的HTTPS';s钥匙链,iphone,keychain,self-signed,Iphone,Keychain,Self Signed,我必须通过HTTPS将我的iPhone应用程序连接到具有自签名证书的服务器。我无法更改证书或服务器 由于我不想接受所有自签名证书,仅此一个,我的想法是将证书导入应用程序密钥链(从文件读取证书并使用SecItemAdd将其添加到密钥链) 如果我在模拟器中运行应用程序,安装证书,然后在钥匙链中搜索它(使用SecItemCopyMatching),就会找到证书,但连接仍然失败,出现“不受信任的服务器证书”错误 这是模拟器或我的应用程序的问题吗?我还需要做些什么,才能让它起作用吗?或者我可以假设,如果我

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

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

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

这是模拟器或我的应用程序的问题吗?我还需要做些什么,才能让它起作用吗?或者我可以假设,如果我在真实设备上向密钥链添加证书,则连接到服务器将成功(我使用的是
NSURLConnection.sendSynchronousRequest


谢谢你的帮助

您可以使用库。它允许通过将
ASIHTTPRequest
对象的
validatesCureCertificate
属性设置为
NO

忽略证书验证。这应该在模拟器中起作用,但需要注意的是,请参阅Apple示例代码“AdvancedURLConnections”.

这不会改变我的应用程序接受任何自签名证书吗?我只想启用与此特定证书的连接。使用钥匙链条目(如在Java中)是否可能实现此连接?此属性仅设置为请求,而不是整个应用程序。很抱歉混淆,我实际上是指请求,而不是整个应用程序。我只想建立连接,如果服务器有特定的证书,而不是任何其他自签名。是否可以使用钥匙链输入?感谢您指向Apple示例代码。这对我帮助很大。对于一个非常简化的版本,请参阅另一个类似的问题。