使用 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 圆角: