CRL and OCSP behavior of iOS / Security.Framework?

后端 未结 3 1920
一个人的身影
一个人的身影 2020-12-30 07:49

I\'m trying to figure out what iOS\' policy is when verifying certificates using Security.Framework regarding revocation of certificates. I cannot find information about thi

3条回答
  •  渐次进展
    2020-12-30 08:10

    I was able to enable CRL checking for a SecTrustRef object on iOS 10:

    SecTrustRef trust = ...; // from TLS challenge
    CFArrayRef oldPolicies;
    SecTrustCopyPolicies(trust, &oldPolicies);
    SecPolicyRef revocationPolicy = SecPolicyCreateRevocation(kSecRevocationCRLMethod);
    NSArray *newPolicies = [(__bridge NSArray *)oldPolicies arrayByAddingObject(__bridge id)revocationPolicy];
    CFRelease(oldPolicies);
    SecTrustSetPolicies(trust, (__bridge CFArrayRef)newPolicies);
    SecTrustSetNetworkFetchAllowed(trust, true);
    
    // Check the trust object
    SecTrustResult result = kSecTrustResultInvalid;
    SecTrustEvaluate(trust, &result);
    // cert revoked -> kSecTrustResultRecoverableTrustFailure
    

    Calling SecTrustSetNetworkFetchAllowed was key. Without that call, SecTrustEvaluate returned kSecTrustResultUnspecified instead.

提交回复
热议问题