Comment puis-je détecter un certificat auto-signé d'un certificat révoqué ou expiré?Évaluation du certificat de serveur
J'utilise NSURLConnection et connexion mise en œuvre: didReceiveAuthenticationChallenge: le délégué:
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge{
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]){
NSURLProtectionSpace *tmpSpace=[challenge protectionSpace];
SecTrustRef currentServerTrust=[tmpSpace serverTrust];
SecTrustResultType trustResult;
OSStatus err = SecTrustEvaluate(currentServerTrust, &trustResult);
BOOL trusted = (err == noErr) && ((trustResult == kSecTrustResultProceed) || (trustResult == kSecTrustResultUnspecified));
if (trusted){
// Do something
}
}
}
Actuellement, le « if (confiance) {} » bloc ne fonctionne que pour les certificats de confiance par iOS, je veux travailler pour d'autres aussi, mais seulement si le certificat n'est pas révoqué ou expiré.
La documentation utilise SecTrustSettingsSetTrustSettings pour modifier les paramètres et réévaluer l'approbation. mais je ne pouvais pas trouver cette méthode (ou le SecTrustSetting) pour iOS, seulement pour Mac.
Merci