2017-05-26 3 views
0

Je suis en train d'essayer de faire des épinglages SSL dans mon application. Après tous les guides, j'ai obtenu ceci:AFNetworking SSL épinglage ne fonctionne pas correctement

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" est la sous-classe de AFHTTPSessionManager.

J'ai testé cela sur deux serveurs. Le premier serveur a my.cer, et quand je fais une requête, la méthode URLSession:didReceiveChallenge:completionHandler de AFURLSessionManager est appelée. Ensuite, les certificats se comparent et tout va bien.

Le second serveur n'a pas my.cer. Quand je fais des demandes URLSession:didReceiveChallenge:completionHandler de AFURLSessionManager ne fait pas les appels et le contrôle de certification ne se produit pas, mais je peux faire des demandes et obtenir des réponses.

Existe-t-il un moyen d'annuler une demande si je n'ai pas reçu de certificat du serveur?

Merci!

Répondre

0

En cherchant au moins quelques informations, je suis tombé sur une discussion et j'ai trouvé que le bit NSAllowsArbitraryLoads dans mon info.plist le provoquait.

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

La suppression de ceci m'a aidé. Espérons que cela aidera quelqu'un d'autre.