Https iOS带有自签名证书

时间:2014-03-26 14:16:44

标签: ios objective-c https certificate ssl-certificate

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

SURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)

然后它是一个自签名证书。

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:20)

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

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

  • 对于NSURLConnection,请检查this answer
  • 对于ASIHTTPRequest,您需要将属性validatesSecureCertificate设置为NO。
  • 对于AFNetworking,您可以查看要在this page
  • 中使用的代码
  • 对于CFNetwork,低级别的Foundation框架,请检查this sample code
  • 对于看起来像你正在使用的SURLConnection,你需要遵循NSURLConnection的相同说明。实际上,SURLConnection只是NSURLConnection的一个子类。

重要提示:
上面的代码,即使无效,接受任何类型的SSL证书都是一个严重的安全风险。基本上,它使整个SSL无用。因此,如果您确实需要使用SSL连接进行测试,则应仅在开发期间使用该代码。 另请注意,Apple将拒绝提交给App Store的任何接受无效SSL证书的申请。

答案 1 :(得分:2)

证书配置:

您必须在设备上安装自签名证书 CA 才能让设备信任它 然后只有设备信任SSL连接。

如果安装自签名证书,请确保 URL 域名公用名相同证书。

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

证书安装:

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

证书创建:

以下是创建自签名证书的方法,以便您可以在Web服务器中填写所有详细信息和主机。

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

(输入公共名称值时注意)