使用自签名证书https卡
我有一个自签名证书的服务器。 我想用httpsforms将我的设备连接到服务器。 我听说我必须接受这个关系。 但我不知道如何。 我有一个自签名证书,因为它是一个testing服务器。 但我想用httpsforms访问它? 当我尝试访问https我有一个错误:
SURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
然后它是一个自签名证书。
有人可以帮助我吗?
默认情况下,Cocoa在证书无效时拒绝所有的SSL连接。
但是,您也可以强制他们接受无效的证书。 该方法取决于你正在使用的库/框架。 例如:
- 对于NSURLConnection,请检查这个答案 。
- 对于ASIHTTPRequest,您需要将属性
validatesSecureCertificate
设置为NO。 - 对于AFNetworking,您可以检查在此页面中使用的代码
- 对于CFNetwork,低级别的Foundation框架,请检查此示例代码 。
- 对于您正在使用的SURLConnection,您需要遵循相同的NSURLConnection说明。 确实,SURLConnection只是NSURLConnection的一个子类。
重要的提示:
上面的代码,接受任何一种SSL证书,即使是无效的,都是一个严重的安全风险。 基本上,它使整个SSL无用。 因此,如果您确实需要使用SSL连接进行testing,则只能在开发过程中使用该代码。
另请注意,苹果将拒绝任何提交给接受无效SSL证书的App Store的应用程序。
证书configuration:
您必须在设备上安装自签名证书或CA ,以便设备信任它,然后只有设备信任SSL连接。
在安装自签名证书的情况下,请确保URL的 域名 与证书的 通用名称相同。
如果没有域名,那么IP地址是好的。
证书安装:
您可以将其托pipe在Web服务器上,然后尝试从Safari浏览器访问它,然后iOS会提示在iOS设备中安装证书
证书创build:
以下是创build自签名证书的方法,以便您可以填写所有的详细信息,并在Web服务器中进行托pipe。
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 1001 -nodes
(inputCommon Name的值时请注意)