AFNetworking https网络请求
验证证书
AFHTTPSessionManager *manager =[[AFHTTPSessionManager manager] initWithBaseURL:[NSURL URLWithString:APP_DATE_URL]]; NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"https" ofType:@"cer"]; NSData * certData =[NSData dataWithContentsOfFile:cerPath]; NSSet * certSet = [[NSSet alloc] initWithObjects:certData, nil]; AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; //是否允许,NO-- 不允许无效的证书 securityPolicy.allowInvalidCertificates = NO; //是否验证域名 securityPolicy.validatesDomainName = YES; // 设置证书 [securityPolicy setPinnedCertificates:certSet]; manager.securityPolicy = securityPolicy; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; [manager POST:APP_DATE_URL parameters:params progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"success"); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"failed error is %@",error.userInfo); }];不验证证书
AFHTTPSessionManager *manager =[AFHTTPSessionManager manager]; AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy]; //是否允许,NO-- 允许无效的证书 securityPolicy.allowInvalidCertificates = YES; //是否验证域名 securityPolicy.validatesDomainName = NO; manager.securityPolicy = securityPolicy; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; [manager POST:APP_DATE_URL parameters:params progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"success"); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"failed error is %@",error.userInfo); }];获取站点证书的方法 方法一、在mac机上,运行命令: openssl s_client -connect https//www.baidu.com:443 /dev/null | openssl x509 -outform DER > https.cer
该条命令将会在当前路径下,形成www.baidu.com站点的公开二进制证书,命名为https.cer。您可以将www.baidu.com 替换成您自己的站点以此来获取您自己站点的https.cer。 方法二、直接使用360浏览器或者IE浏览器导出证书文件,导出步骤如下: 1、首先使用360浏览器打开网址,点击网址前面的小锁,弹出证书信息,点击征信信息,然后选择证书信息选项卡,点击复制文件,导出为.cer证书,如下图:
如何才能知道一个HTTPS服务器是否符合ATS特性中的要求的呢?使用nscurl命令: nscurl –ats-diagnostics –verbose https://www.baidu.com
参考: http://www.jianshu.com/p/20d5fb4cd76d http://www.cocoachina.com/ios/20160224/15394.html http://www.cocoachina.com/ios/20160224/15394.html http://www.cocoachina.com/ios/20161220/18393.html http://www.jianshu.com/p/97745be81d64