我现在已经阅读了很多帖子和资料,但找不到明确的答案。
我在我的 kSecTrustResultRecoverableTrustFailure
调用中收到 SecTrustEvaluate()
,我想弄清楚为什么会这样(即我想弄清楚信任链验证究竟在哪里失败以及为什么)。在 OSX 上似乎有一些相关的函数叫做 SecTrustGetResult
,但现在即使在 OSX 上也不推荐使用
我怎样才能找出验证失败的地方?我可以使用私有(private) API,因为我仅在调试期间使用它来了解内部究竟发生了什么。
谢谢
最佳答案
调用 SecTrustCopyProperties()
后只需使用 SecTrustEvaluate()
:
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
。关于macos - iOS : how to debug kSecTrustResultRecoverableTrustFailure,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25489900/