文章目录

昨天在新公司调用公司生产环境时,发现公司生产环境是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]

[1]: http://www.jianshu.com/p/f732749ce786

文章目录