如何在没有 SecTrustGetTrustResult 的情况下诊断 iOS 上的证书可恢复信任失​​败?

Posted

技术标签:

【中文标题】如何在没有 SecTrustGetTrustResult 的情况下诊断 iOS 上的证书可恢复信任失​​败?【英文标题】:How do I diagnose a certificate recoverable trust failure on iOS, without SecTrustGetTrustResult? 【发布时间】:2012-08-16 01:49:20 【问题描述】:

在向 ios 应用程序添加客户端证书时,我遇到了证书的可恢复信任失​​败。 iOS docs discussion for SecTrustEvaluate 特别建议使用SecTrustGetTrustResult() 来获取失败的细节,但链接器在引用它时失败。 (它不在任何与 iOS 相关的头文件中,也没有针对该功能的特定 iOS 文档,仅在 SecTrustGetTrustResult 中提及。另一个回复 recent *** question 表示它在 iOS 上不可用,但没有任何支持详细信息。)假设它实际上不可用,那么在我的 iOS 代码中获取有关可恢复故障的具体详细信息的正确方法是什么?

(那个 iOS 手册也提到了 SecTrustGetCssmResult 用于相同的目的。我还没有尝试过,但在 iOS 5.1 头文件中也没有以任何方式提及,也没有任何 iOS 文档条目专门用于该函数。此外,Mac OS X 文档确实有详细信息,将其标记为 - 以及相关的SecTrustGetCssmResultCode - 已弃用。)

最后说明:由于我们同时运行服务器和客户端,因此我们使用的是私人制作的证书,我相信我们可以随意重新生成证书。我没有生成我目前使用的那个,所以不确定它的血统书。如果相关,我正在尝试使用 Xcode 4.3.3 与 iPhone 5.1 或 iPad 5.1 模拟器目标进行编译。

感谢任何线索!

【问题讨论】:

SecTrustGetCssmResult 和 SecTrustGetCssmResultCode 在 iOS 上似乎也不可用。 (我没有提到我的代码导入了 Security/Security.h。) 我了解到我正在集成的证书正在其他客户端中使用,因此我们无法更换新证书。至少我知道它有效。 在Certificate, Key, and Trust Services Reference doc 中声明SecTrustGetTrustResult 仅适用于Mac OS X 而不适用于iOS。 【参考方案1】:

@constant kSecTrustResultRecoverableTrustFailure 表示信任策略 用户可以覆盖的失败。可能会返回此值 通过 SecTrustEvaluate 函数但不存储为用户的一部分 信任设置。

看来您可以将其视为 .proceed。

【讨论】:

以上是关于如何在没有 SecTrustGetTrustResult 的情况下诊断 iOS 上的证书可恢复信任失​​败?的主要内容,如果未能解决你的问题,请参考以下文章

我如何在没有订单的情况下填充托盘架存储?

如何在没有没有索引的 url 的情况下调用 codeigniter 控制器功能

如何在没有 UITableViewController 的情况下结束 UIRefreshControl

如何在没有 GPU 的情况下运行 tensorflow?

如何在没有'id'列的MySql中获取最后插入的记录?

如何在没有 iMessage 的情况下发送短信