具有自签名证书的Https iOS

具有自签名证书的Https iOS,ios,objective-c,https,certificate,ssl-certificate,Ios,Objective C,Https,Certificate,Ssl Certificate,我有一个具有自签名证书的服务器。我想用https表单将我的设备连接到服务器。 我听说我必须接受这种关系。但我不知道怎么做。 我有一个自签名证书,因为它是一个测试服务器。但我想用https表单访问它? 当我尝试使用https访问时,出现了一个错误: SURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813) 然后它是一个自签名证书 有人能帮我吗 默认情况下,当证书无效时,Cocoa拒绝所有SSL

我有一个具有自签名证书的服务器。我想用https表单将我的设备连接到服务器。 我听说我必须接受这种关系。但我不知道怎么做。 我有一个自签名证书,因为它是一个测试服务器。但我想用https表单访问它? 当我尝试使用https访问时,出现了一个错误:

SURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
然后它是一个自签名证书


有人能帮我吗

默认情况下,当证书无效时,Cocoa拒绝所有SSL连接

但是,您可以强制它们也接受无效证书。该方法取决于您使用的库/框架。例如:

  • 对于NSURL连接,请检查
  • 对于HttpRequest,您需要将属性
    validatesCureCertificate
    设置为NO
  • 对于AFNetworking,您可以检查要在中使用的代码
  • 对于CFNETS,底层基础框架,CHECK.
  • 对于看起来正在使用的SURLConnection,您需要遵循与NSURLConnection相同的说明。实际上,SURLConnection只是NSURLConnection的一个子类
重要提示:
上面的代码,接受任何类型的SSL证书,即使无效,也是一个严重的安全风险。基本上,它使整个SSL变得毫无用处。因此,如果您确实需要使用SSL连接进行测试,您应该仅在开发过程中使用该代码。

还请注意,苹果将拒绝提交到应用商店的任何接受无效SSL证书的应用程序。

证书配置:

您必须在设备上安装自签名证书或CA,以便设备信任它 然后,只有设备信任SSL连接

在安装自签名证书的情况下,请确保URL的域名与证书的通用名称相同

如果没有域名,那么IP地址就可以了

证书安装:

您可以将其托管在web服务器上,并尝试从safari访问它,然后iOS将提示在iOS设备中安装证书

证书创建:

以下是创建自签名证书的方法,以便您可以填写所有详细信息并在web服务器中托管

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 1001 -nodes

(输入常用名称的值时请注意)

你好,夸库诺,谢谢你的回答。但我不使用任何框架/库。我必须吗?如何将新框架集成到我的应用程序中?你不可能不使用框架。最简单的是NSURLConnection,它是Cocoa(内置于系统中)的一部分,但还有更多。谢谢。如何安装NSURLConnection?刚刚过去?在那之后,我要做什么?你能告诉我吗?谢谢您不安装NSURLConnection。。。!你要修改的代码是谁写的?我没有代码。我只想允许https连接到我的服务器(使用自签名证书),但我找不到解决方案是什么导致了错误消息?您的第二种方法是错误的。当Safari提示您安装证书时,证书将安装在Safari中(只有Safari会使用它)。这意味着在安装之后,您仍然无法在应用程序中使用connect。最糟糕的是-要从Safari中删除证书,您必须(从~iOS 7)重置所有设备的设置。例如,为了正确安装,您应该通过电子邮件发送您的证书并在iPhone上打开文件。@franiis-它也将用于应用程序。试试看