优艾设计网

iOS中AFNetworking HTTPS配置不成功,谁碰到过同样的错误??

优艾设计网 https://www.uibq.com 2023-04-16 19:49 出处:网络 作者:PS教程自学
今天公司弄到了HTTPS证书 我在工程里配置 试了很多遍都报错想问问大神错误在哪里 代码如下,以为是网络请求封装的不对,特意写了个简单的 NSDictionary *params = @{@\"mobile\" : self.loginName,@\"password\" : [

今天公司弄到了HTTPS证书 我在工程里配置 试了很多遍都报错

想问问大神错误在哪里

代码如下,以为是网络请求封装的不对,特意写了个简单的

NSDictionary *params = @{

@"mobile" : self.loginName,@"password" : [RSA rsaPassword:self.password]}; // 1.获得请求管理者 AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager]; // 2.申明返回的结果是text/html类型 mgr.responseSerializer = [AFHTTPResponseSerializer serializer]; // /先导入证书 NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"fullway" ofType:@"cer"];//证书的路径 NSData *certData = [NSData dataWithContentsOfFile:cerPath]; // AFSSLPinningModeCertificate 使用证书验证模式 AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];// allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO // 如果是需要验证自建证书,需要设置为YES securityPolicy.allowInvalidCertificates = YES; //validatesDomainName 是否需要验证域名,默认为YES; //假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。 //置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是<a href=""http://www.google.com"" target=""_blank"" onclick=""return" checkurl(this)"="" id=""url_1"">www.google.com</a>,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。 //如置为NO,建议自己添加对应域名的校验逻辑。 securityPolicy.validatesDomainName = NO; securityPolicy.pinnedCertificates = [NSSet setWithObject:certData]; // 加上这行代码,https ssl 验证。 [mgr setSecurityPolicy:securityPolicy]; // 3.发送POST请求 [mgr POST:[NSString stringWithFormat:@"%@%@",[WDGlobal global].BASE_URL,USER_LOGIN] parameters:params progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id_Nullable responseObject) { NSLog(@"请求成功 ---- %@",responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"error--------------------->%@----------------------->>error.code---%ld----------------------->>error.localizedDescription%@",error,error.code,error.localizedDescription); }];

这里是服务器返回的错误log

error--------------------->

Error Domain=NSURLErrorDomain Code=-1200 "发生了 SSL 错误,无法建立与该服务器的安全连接。"UserInfo={_kCFStreamErrorCodeKey=-9824,NSLocalizedRecoverySuggestion=您仍要连接此服务器吗?,NSUnderlyingError=0x174445580 {Error Domain=kCFErrorDomainCFNetworkCode=-1200 "(null)"UserInfo={_kCFStreamPropertySSLClientCertificateState=0,_kCFNetworkCFStreamSSLErrorOriginalValue=-9824, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9824}}, NSLocalizedDescription=发生了 SSL 错误,无法建立与该服务器的安全连接。,NSErrorFailingURLKey=https://139.224.186.36:8443/p...NSErrorFailingURLStringKey=https://139.224.186.36:8443/p..._kCFStreamErr优艾设计网_PS交流orDomainKey=3}


----------------------->> error.code--- -1200 ----------------------->> error.localizedDescription 发生了 SSL 错误,无法建立与该服务器的安全连接。安卓的同事可以访问不知道哪里配置除了问题 一脸萌比


我叫zzf 优艾设计网_设计模板 2022-06-14 06:16

你的证书是不是后台直接给你的?如果是你试试下面的做法,我前几天刚弄完,也遇到一个问题,errorCode忘了是不是和你的一样了.


ty_胭脂扣371 2022-06-14 06:35

优艾设计网_设计百科

因为AFNetworking不会对证书做base64处理,所以后台直接给的证书是不能用的,你试试用这个方法拿:openssl s_client -connect www.mywebsite.com:443 </dev/null 2>/dev/null | openssl x509 -outform DER > myWebsite.cer 网址换成你们的,这样拿到的.cer文件是AFNetworking直接可以用的。


0

精彩评论

暂无评论...
验证码 换一张
取 消