开发者社区> 问答> 正文

HttpDns iOS : 报错 Code=-1202 此服务器的证书无效,如何解决?

HttpDns iOS : 报错 Code=-1202 此服务器的证书无效,如何解决?

展开
收起
保持可爱mmm 2020-03-27 21:03:46 2746 0
1 条回答
写回答
取消 提交回答
  • { [policies addObject:(__bridge_transfer id) SecPolicyCreateBasicX509()]; }

    /*
     * 绑定校验策略到服务端的证书上
     */
    SecTrustSetPolicies(serverTrust, (__bridge CFArrayRef) policies);
    /*
     * 评估当前serverTrust是否可信任,
     * 官方建议在result = kSecTrustResultUnspecified 或 kSecTrustResultProceed
     * 的情况下serverTrust可以被验证通过,https://developer.apple.com/library/ios/technotes/tn2232/_index.html
     * 关于SecTrustResultType的详细信息请参考SecTrust.h
     */
    SecTrustResultType result;
    SecTrustEvaluate(serverTrust, &result);
    
    if (result == kSecTrustResultRecoverableTrustFailure) {
        CFDataRef errDataRef = SecTrustCopyExceptions(serverTrust);
        SecTrustSetExceptions(serverTrust, errDataRef);
        SecTrustEvaluate(serverTrust, &result);
    }
    
    return (result == kSecTrustResultUnspecified || result == kSecTrustResultProceed);
    

    } 注意添加了如下步骤 :

    Objective-C

    if (trustResult == kSecTrustResultRecoverableTrustFailure) { CFDataRef errDataRef = SecTrustCopyExceptions(serverTrust); SecTrustSetExceptions(serverTrust, errDataRef);

        SecTrustEvaluate(serverTrust, &trustResult);
    }
    

    具体调整的原因可以参考: Apple Doc - Function:SecTrustCopyExceptions Use HTTPS certificate handling to protect your iOS app

    2020-03-27 21:06:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS计算与存储分离架构实践 立即下载