【发布时间】:2013-05-17 15:41:55
【问题描述】:
在我的应用程序中,我使用 https 和自签名 SSL 证书来保护我的客户端和服务器之间的连接。
我试图让 AFNetworking 库对我捆绑在应用程序中的证书副本执行 SSL 固定。
在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 网络服务器中,我有一个 .crt 证书。
这是问题吗?有没有办法让 AFNetworking 与 .crt 一起工作?
在 Windows 机器上,我将 .crt 转换为 .cer 并尝试将其捆绑到我的应用程序中,但仍然遇到相同的错误。我是否应该尝试在服务器端使用新创建的 .cer 切换 .crt 文件?
【问题讨论】:
-
你找到答案了吗?介意分享一下吗?
-
我刚刚放弃使用
AFNetworking并编写了一个使用标准NSURLConnection的类(并充当连接本身的代表)来发出请求,我手动处理了比较的东西在- (void)connection: NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge方法中,它是NSURLConnectionDelegate协议的一部分,如果您想查看代码,请随时询问。 -
我自己没试过。但在 AFNetworking 示例项目中。 SSL 固定模式设置为 AFSSLPinningModePublicKey,而不是 AFSSLPinningModeCertificate。你试过了吗?
标签: ios ssl afnetworking