如何在没有 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 控制器功能