AFNetWork3.1对https无证书访问支持
文章目录
昨天在新公司调用公司生产环境时,发现公司生产环境是https协议,而ios端用的AFNetWork去访问时,报出:
In order to validate a domain name for self signed certificates, you MUST use pinning.
从字面上看,这个错误是因为证书的问题导致的,应该是客户端需要证书认证,但问服务器,服务器说,不会给证书给客户端,可能服务端说的是私钥不会给,但正常情况下,应该需要授权公钥给客户端,那我只能通过免证书的方式去做了,google了一下,通过设置如下代码亲测有效:
NSURLSessionConfiguration *configuration = \[NSURLSessionConfiguration defaultSessionConfiguration];
self.requestOperationManager = [[[AFHTTPSessionManager alloc] initWithSessionConfiguration:configuration];
// 如果是需要验证自建证书,需要设置为YES
self.requestOperationManager.securityPolicy.allowInvalidCertificates = YES;
//设置是否域名一致性验证
self.requestOperationManager.securityPolicy.validatesDomainName = NO;
注意:后面self.requestOperationManager.securityPolicy.validatesDomainName
必须设置为NO,否则https不起效。
参考了这篇文章:
[AFNetWork3.1设置免证书访问https][1]