我的应用程序使用https和自签名的SSL证书来保护客户端和服务器之间的连接。
我试图让AFNetworking库对应用程序中捆绑的证书副本进行SSL Pinning。
在AFURLConnectionOperation
头文件中,我定义了:
#define _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_ =1
#define _AFNETWORKING_PIN_SSL_CERTIFICATES_ =1
在调用我的
AFJSONRequestOperation
的start
之前,我将SSLPinningMode
属性设置为AFSSLPinningModeCertificate
。但是,在尝试执行JSON请求时,我不停地收到以下错误:Error Domain=NSURLErrorDomain Code=-1012 "The operation couldn’t be completed.
(NSURLErrorDomain error -1012.)" UserInfo=0x758f120
{NSErrorFailingURLKey=https://mydomain.com,
NSErrorFailingURLStringKey=https://mydomain.com}
在
AFURLConnectionOperation
头文件中,我发现SSL Pinning使用.cer证书,但是在我的自托管的OS X Web服务器上,我有一个.crt证书。这是问题吗?有没有办法让AFNetworking与.crt一起工作?
在Windows框上,我将我的.crt转换为.cer,并尝试将其捆绑到我的应用程序中,但我仍然收到相同的错误。我应该尝试在服务器端切换.crt文件为新创建的.cer吗?
AFNetworking
,写了一个类来利用标准的NSURLConnection
(并作为连接本身的代理)来发出请求,并在NSURLConnectionDelegate
协议的- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
方法中手动处理比较的内容。如果您想查看代码,请随时提问。 - BigLex