2017-05-26 17 views
0

Ich versuche, SSL-Pinning in meiner App zu machen. Nach allen Anleitungen habe ich das:AFNetworking SSL-Pinning funktioniert nicht korrekt

AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; 
policy.allowInvalidCertificates = YES; 
NSData *localCertificate = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"my" ofType:@"cer"]]; 
policy.pinnedCertificates = [[NSSet alloc] initWithObjects:localCertificate, nil]; 
self.securityPolicy = policy; 

"Self" ist Unterklasse von AFFTTPSessionManager.

Ich habe das auf zwei Servern getestet. Der erste Server hat my.cer, und wenn ich eine Anfrage mache, wird die Methode URLSession:didReceiveChallenge:completionHandler von AFURLSessionManager aufgerufen. Dann vergleicht das Zertifikat und alles ist in Ordnung.

Zweiter Server haben kein my.cer. Wenn ich Anfragen mache URLSession:didReceiveChallenge:completionHandler von AFURLSessionManager ruft nicht an und testificate Überprüfung geschieht nicht, aber ich kann Anfragen stellen und Antworten erhalten.

Gibt es eine Möglichkeit, eine Anfrage abzubrechen, wenn ich kein Zertifikat vom Server erhalten habe?

Danke!

Antwort

0

Bei der Suche nach mindestens einigen Informationen stieß ich auf eine Diskussion und fand, dass NSAllowsArbitraryLoads Bit in meinem info.plist es verursachte.

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 

Das Löschen hat mir geholfen. Hoffe, das wird jedem anderen helfen.

Verwandte Themen