我想通过一些额外的检查来验证我的ssl服务器证书。有时我会得到一个
kSecTrustResultRecoverableTrustFailure 而不是
kSecTrustResultProceed或kSecTrustResultUnspecified
如果是这样的话
SecTrustSetAnchorCertificatesOnly(trust,YES),并且锚证书仅在内置的锚证书中。这取决于用于评估信任的AppleX509TP策略。
我的问题是,如果链失败,我不想信任,但是如果使用MD5,我想要信任。
有没有办法找出评估失败的原因?
作为另一种选择,是否有一种从CSSM_ALGID_MD5中提取SecCertificateRef的方法
发布于 2019-11-12 16:18:35
有没有办法找出评估失败的原因?
调用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。
https://stackoverflow.com/questions/7715426
复制相似问题