首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kSecTrustResultRecoverableTrustFailure的原因是什么?

kSecTrustResultRecoverableTrustFailure的原因是什么?
EN

Stack Overflow用户
提问于 2011-10-10 15:52:52
回答 1查看 10.2K关注 0票数 6

我想通过一些额外的检查来验证我的ssl服务器证书。有时我会得到一个

代码语言:javascript
复制
kSecTrustResultRecoverableTrustFailure 

而不是

kSecTrustResultProceedkSecTrustResultUnspecified

如果是这样的话

  • 证书是md5散列(IOS5)
  • 服务器不显示根证书和中间证书。
  • 设置了SecTrustSetAnchorCertificatesOnly(trust,YES),并且锚证书仅在内置的锚证书中。
  • 证书已过期。

这取决于用于评估信任的AppleX509TP策略。

我的问题是,如果链失败,我不想信任,但是如果使用MD5,我想要信任。

有没有办法找出评估失败的原因?

作为另一种选择,是否有一种从CSSM_ALGID_MD5中提取SecCertificateRef的方法

EN

回答 1

Stack Overflow用户

发布于 2019-11-12 16:18:35

有没有办法找出评估失败的原因?

调用SecTrustCopyProperties()后调用SecTrustEvaluate()

代码语言:javascript
复制
SecTrustRef trust = ...;
SecTrustResultType trustResult = kSecTrustResultOtherError;
OSStatus status = SecTrustEvaluate(trust, &trustResult);
if (trustResult == kSecTrustResultRecoverableTrustFailure) {
    NSArray * trustProperties = (__bridge_transfer id)
        SecTrustCopyProperties(certTrust);
}

trustProperties是一个字典数组,在计算证书链中每个证书都有一个字典。每个字典都有一个条目title,包含证书的名称,如果证书没有计算,它还包含一个包含错误的条目error。如果问题是证书过期了,那么error的值将是CSSMERR_TP_CERT_EXPIRED

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

https://stackoverflow.com/questions/7715426

复制
相关文章

相似问题

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