Почему все еще мой недействительный Сертификат By-Pass не работает в быстром Alamofire - PullRequest
0 голосов
/ 20 сентября 2019

Проблема с неверным сертификатом в URL службы. Я использую Alamofire для запроса API.Вот некоторый код со свойством Plist

 private static var Manager : Alamofire.SessionManager = {


        let cert = "cert" 

        let serverTrustPolicies: [String: ServerTrustPolicy] = [
                    "https://xxx.xxx.xx.xxx/xxx/": .disableEvaluation
                ]

        // Set up certificates
        let pathToCert = Bundle.main.path(forResource: cert, ofType: "cer")
        let localCertificate = NSData(contentsOfFile: pathToCert!)
        let certificates = [SecCertificateCreateWithData(nil, localCertificate!)!]

        // Configure the trust policy manager
        let serverTrustPolicy = ServerTrustPolicy.pinCertificates(
            certificates: certificates,
            validateCertificateChain: true,
            validateHost: true
        )

                // Create custom manager
                let configuration = URLSessionConfiguration.default
                configuration.httpAdditionalHeaders = Alamofire.SessionManager.defaultHTTPHeaders
                let man = Alamofire.SessionManager(
                    configuration: URLSessionConfiguration.default,
                    serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
                )
                return man
            }()

Мой метод запроса


static func get(endPoint: String,
                            parameters: [String : Any] = [:],
                            headers: [String : Any] = [:],
                            success : @escaping (Any) -> Void,
                            failure : @escaping (Error) -> Void) {
        print("\(endPoint)")
        request(URLString: endPoint, httpMethod: .get, parameters: parameters, headers: headers, success: success, failure: failure)
    }


    private static func request(URLString: String,
                                httpMethod: HTTPMethod,
                                parameters: [String : Any] = [:],
                                headers: [String : Any] = [:],
                                success : @escaping (Any) -> Void,
                                failure : @escaping (Error) -> Void) {
        var additionalHeaders: HTTPHeaders?
        print("Requestcheck")
        additionalHeaders = headers as? HTTPHeaders
        Manager.request(URLString, method: httpMethod,
                          parameters: parameters, encoding: httpMethod == .get ? URLEncoding.queryString : JSONEncoding.default,
                          headers: additionalHeaders).responseJSON { (response: DataResponse<Any>) in
                            parseResponse(response, success: success, failure: failure)
        }
    }


Мой файл Plist: -

 <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>https://xxx.xxx.xx.xxx/</key>
        <dict>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.2</string>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>

и все еще я получаю.Загрузка не удалась с ошибкой Ошибка Domain = NSURLErrorDomain Code = -1202 "Сертификат для этого сервера недействителен. Возможно, вы подключаетесь к серверу, который притворяется« xxx.xxx.xx.xxx », что может подвергнуть риску вашу конфиденциальную информацию«.UserInfo = {NSLocalizedRecoverySuggestion = Вы все равно хотите подключиться к серверу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...