使用 AFNetworking 2.3.1 的自签名 SSL 证书

Posted

技术标签:

【中文标题】使用 AFNetworking 2.3.1 的自签名 SSL 证书【英文标题】:self-signed SSL certificate using AFNetworking 2.3.1 【发布时间】:2014-07-22 08:21:50 【问题描述】:

我正在尝试在我的 ios 应用程序中使用自签名证书 .cer。我遵循了这个不错的教程: http://initwithfunk.com/blog/2014/03/12/afnetworking-ssl-pinning-with-self-signed-certificates/

我在项目中添加了我的 .cer 文件。 并初始化我的 AFHTTPRequestOperationManager :

self.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
self.securityPolicy.allowInvalidCertificates = YES;

但我总是收到这个 -1012 错误:

错误 操作无法完成。 (NSURLErrorDomain 错误 -1012.)

我检查了+ (NSArray *)defaultPinnedCertificates,它正确加载了我的.cer

evaluateServerTrust:forDomain: 总是返回 NO :

return trustedCertificateCount == [serverCertificates count];

[serverCertificates count] = 2 和 trustedCertificateCount = 1。

这是什么意思?你能帮我吗?

【问题讨论】:

【参考方案1】:

AFSecurityPolicy 的默认行为是验证证书链。您应该添加所有中间证书,或禁用链的验证:

self.securityPolicy.validatesCertificateChain = NO;

添加中间证书是首选方法。

【讨论】:

感谢这项工作。我们决定只保留叶子检查系统,以便在不重新提交应用程序的情况下更新服务器端证书。 如果使用相同的密钥更新证书,您可能会发现 AFSSLPinningModePublicKey 对这种情况很有帮助

以上是关于使用 AFNetworking 2.3.1 的自签名 SSL 证书的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AFNetworking 为请求设置 HTTP 正文?

使用 AFNetworking setImageWithURL 设置 UIImageView 圆角:

AFNetworking 和 UIImageView 更新线程问题

使用openssl自签CA

Nginx自签ssl证书创建及配置方法

如何允许用户在 iOS 中使用 AFNetworking 信任和固定自签名 SSL 证书