注:如果不允许抓包,请校验证书,如果允许抓包,就不要校验证书!
securityPolicy属性请设置为:AFSSLPinningModeNone(该属性的默认值)
升级https其实主要是服务器来做,如果客户端不做校验证书的话,你的工作就是把接口地址从http 改成 https,然后坐看服务器的小伙伴忙的翻天覆地。
如果需要防止被抓包或者为了验证请求安全,请设置校验证书。
AFN两种管理者
1.AFURLSessionManager
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
// 设置证书模式
NSString * cerPath = [[NSBundle mainBundle] pathForResource:@"证书名字" ofType:@"cer"];
NSData * cerData = [NSData dataWithContentsOfFile:cerPath];
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:[[NSSet alloc] initWithObjects:cerData, nil]];
// 客户端是否信任非法证书
manager.securityPolicy.allowInvalidCertificates = YES;
// 是否在证书域字段中验证域名
[manager.securityPolicy setValidatesDomainName:NO];
2.AFHTTPSessionManager(代码与上面的其实是相同的,只不过是管理者的创建方法的区别)
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// 2.设置证书模式
NSString * cerPath = [[NSBundle mainBundle] pathForResource:@"证书名字" ofType:@"cer"];
NSData * cerData = [NSData dataWithContentsOfFile:cerPath]; manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:[[NSSet alloc] initWithObjects:cerData, nil]];
// 客户端是否信任非法证书
manager.securityPolicy.allowInvalidCertificates = YES;
// 是否在证书域字段中验证域名
[manager.securityPolicy setValidatesDomainName:NO];