首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS / Security.Framework的CRL和OCSP行为?

iOS / Security.Framework的CRL和OCSP行为?
EN

Stack Overflow用户
提问于 2011-04-12 02:19:12
回答 3查看 6.7K关注 0票数 13

我正在尝试弄清楚在使用Security.Framework验证证书时iOS的策略是什么。我在iOS的文档中找不到关于这方面的信息。在我目前正在从事的一个iPad项目的上下文中,有理由要求检查某些证书的撤销状态。谁知道如何使用Security.Framework在证书验证过程中强制执行CRL / OCSP检查?或者我需要“退回”到OpenSSL来完成这件事吗?

似乎在MacOSX10.6上,CRL / OCSP检查也是可选的,并且必须通过Keychain访问手动打开。

马提金

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-03 05:36:47

我有一个苹果家伙的问题的答案,我在这里发布了完整的答案:

Details on SSL/TLS certificate revocation mechanisms on iOS

总而言之,要在iOS上实现OCSP,需要记住几件事:

  • OCSP策略此时无法配置
  • 它适用于EV证书only
  • high-level内容,如NSURLConnection或UIWebView使用TLS安全策略,它使用OCSP
  • SecTrustEvaluate是阻塞网络操作
  • 它的工作方式是“最佳尝试”-如果无法联系OCSP服务器,信任评估将不会失败
票数 13
EN

Stack Overflow用户

发布于 2015-04-21 07:42:11

我刚刚在GCDAsyncSocket的iOS上做了这件事。

对于给定的SecTrustRef信任,执行以下操作

代码语言:javascript
复制
SecPolicyRef policy = SecPolicyCreateRevocation(kSecRevocationOCSPMethod)
SecTrustSetPolicies(trust, policy);
SecTrustResultType trustResultType = kSecTrustResultInvalid;
OSStatus status = SecTrustEvaluate(trust, &trustResultType);
if (status == errSecSuccess && trustResultType == kSecTrustResultProceed)
{
   //good!
}
else
{
   //not good
}

//编辑以检查trustResultType

票数 1
EN

Stack Overflow用户

发布于 2017-08-31 02:48:54

我能够在iOS 10上启用SecTrustRef对象的CRL检查:

代码语言:javascript
复制
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

SecTrustSetNetworkFetchAllowed打电话是关键。如果没有该调用,SecTrustEvaluate将返回kSecTrustResultUnspecified

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5625642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档