2016-04-13 7 views
1

Ich habe ein .der-Zertifikat zu meinem Projekt hinzugefügt, das von ServerTrustPolicy.certificatesInBundle() erkannt wird. Ich erstelle nun eine Manager-die dann API-Aufrufen verwendet wird, machen:Certificate pinning in Alamofire funktioniert nicht

private class func manager() -> Alamofire.Manager { 
    let certificates = ServerTrustPolicy.PinCertificates(
     certificates: ServerTrustPolicy.certificatesInBundle(), 
     validateCertificateChain: true, 
     validateHost: true 
    ) 

    let serverTrustPolicies: [String: ServerTrustPolicy] = [ 
     "api.oursite.com": certificates 
    ] 

    let configuration = NSURLSessionConfiguration.defaultSessionConfiguration() 

    let manager = Alamofire.Manager(
     configuration: configuration, 
     serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies) 
    ) 

    return manager 
} 

Vor diesem war es nur Alamofire.request(... verwenden und diese Anforderungen arbeiteten völlig in Ordnung, aber jetzt ist es mir bei jedem Aufruf einen Fehler geben :

Error Domain=NSURLErrorDomain Code=-999 "cancelled"

Bin ich falsch den Manager einrichten? Vielleicht wurde mein Zertifikat falsch erstellt, und das führt dazu, dass es nicht funktioniert?

Antwort

2

Achten Sie darauf, dass Ihre manager nicht in kurzer Zeit nach Anforderung freigegeben. B. als gespeicherte Eigenschaft in der benutzerdefinierten Manager-Klasse.

Verwandte Themen