AFNetworking 3 проблема

В AFNetworking 3 для недействительного SSL-сертификата я использовал validatesCertificateChain = false , но теперь кажется, что это поле было удалено, и я не могу делать запросы к своему серверу.

Вот класс для запросов:

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
        }
    }
}

Я выполняю запросы:

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)
        })

И в соответствии с это сообщение Я должен использовать свойство validatesCertificateChain. Кто-нибудь может помочь?


person Paul T.    schedule 16.11.2016    source источник
comment
Я все еще вижу, что свойство allowInvalidCertificates существует в AFSecurityPolicy в AFNetworking 3.0.0, см. этот документ — cocoadocs.org/docsets/AFNetworking/3.0.0-beta.1/Classes/   -  person iamyogish    schedule 16.11.2016
comment
Я использую это свойство, но мне нужен еще один validatesCertificateChain, мне нужно установить для него значение false. Пожалуйста, взгляните на лучший ответ на этот вопрос stackoverflow.com/questions/27808249/ . Они сказали об этом объекте, но это было afnetworking 2   -  person Paul T.    schedule 16.11.2016


Ответы (3)


Я решил это, изменив let securityPolicy = AFSecurityPolicy(pinningMode: AFSSLPinningMode.certificate) на let securityPolicy = AFSecurityPolicy(pinningMode: AFSSLPinningMode.none)

person Paul T.    schedule 16.11.2016
comment
Спасибо, что опубликовали свой ответ, который поможет кому-то позже. - person iamyogish; 16.11.2016

Для пользователя target-c setAllowInvalidCertificates:YES без закрепления SSL:

AFSecurityPolicy *sec = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
[sec setAllowInvalidCertificates:YES];
[sec setValidatesDomainName:NO];
manager.securityPolicy = sec;
person Dody Rachmat Wicaksono    schedule 19.04.2018

Цель-C

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;
}
person Sunil Targe    schedule 24.09.2020