首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AFNetworking 3期

AFNetworking 3期
EN

Stack Overflow用户
提问于 2016-11-16 05:19:05
回答 3查看 1.1K关注 0票数 2

AFNetworking 3中,对于无效的SSL证书,我使用了validatesCertificateChain = false,但现在似乎删除了该字段,并且无法向服务器发出请求。

这里是用于请求的类:

代码语言:javascript
运行
复制
import UIKit
import AFNetworking

class ClientHTML: AFHTTPSessionManager {
    private static var __once: () = { () -> Void in

        let securityPolicy = AFSecurityPolicy(pinningMode: AFSSLPinningMode.certificate)
        securityPolicy.validatesDomainName = false
        securityPolicy.allowInvalidCertificates = true
        sharedInstanceTemp.securityPolicy = securityPolicy


        sharedInstanceTemp.requestSerializer = AFHTTPRequestSerializer()
        sharedInstanceTemp.responseSerializer = AFHTTPResponseSerializer()


    }()

    fileprivate static let sharedInstanceTemp = ClientHTML(baseURL: URL(string: kServer_urlBilderlings))

    static var sharedInstance:ClientHTML {
        get {
            _ = ClientHTML.__once

            return sharedInstanceTemp
        }
    }
}

我通过:进行请求

代码语言:javascript
运行
复制
ClientHTML.sharedInstance.post("https://acs-web-test.firstdata.lv", parameters: nil, progress: { (progress) in
            print("progress = ", progress)
        }, success: { (task, response) in
            let data = response as! Data
            let html = String(data: data, encoding: .utf8)
            print("success responce = ", html)
        }, failure: { (task, error) in
            print("error = ", error)
        })

根据this post,我必须使用validatesCertificateChain属性。有人能帮忙吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-16 05:51:02

我通过将let securityPolicy = AFSecurityPolicy(pinningMode: AFSSLPinningMode.certificate)改为let securityPolicy = AFSecurityPolicy(pinningMode: AFSSLPinningMode.none)来解决这个问题。

票数 2
EN

Stack Overflow用户

发布于 2018-04-19 09:37:14

对于不使用SSL固定的目标-c用户setAllowInvalidCertificates:YES

代码语言:javascript
运行
复制
AFSecurityPolicy *sec = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
[sec setAllowInvalidCertificates:YES];
[sec setValidatesDomainName:NO];
manager.securityPolicy = sec;
票数 2
EN

Stack Overflow用户

发布于 2020-09-24 03:49:55

目标-C

代码语言:javascript
运行
复制
static NSString* const kSecurityCertificate = @"xxxxx";

yourManager.securityPolicy = [self customSecurityPolicy];

- (AFSecurityPolicy*)customSecurityPolicy {
   AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
   NSString *cerPath = [[NSBundle mainBundle] pathForResource:kSecurityCertificate ofType:@"der"];
   NSData *certData = [NSData dataWithContentsOfFile:cerPath];
   [securityPolicy setValidatesDomainName:NO];
   [securityPolicy setAllowInvalidCertificates:YES];
   [securityPolicy setPinnedCertificates:[NSSet setWithObjects:certData, nil]];
   return securityPolicy;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40624568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档