【发布时间】:2013-11-05 10:29:07
【问题描述】:
我的 iPhone 应用程序想要访问 iphone 的 CA 信任库来验证 TLS 连接的服务器证书。是否可以访问存储所有已知可信 CA 证书的设备密钥链/信任库?
谢谢, bms
==================================
感谢您的回复。让我详细介绍一下我的设置。我使用 openssl 创建了一个服务器证书,该证书已安装在我的 tomcat 服务器上用于 https 连接。此外,我已经使用我自己的 CA 签署了这个服务器证书,并通过 Safari(http url)将此 CA/Root 证书安装到我的 iPhone 中。现在,在我的应用程序中,我想根据 iPhone 设备配置文件中安装的 CA 证书验证服务器证书(由 tomcat 提供)。
这种服务器验证在 iOS 中是否可行(以编程方式)?
如果服务器证书由公共 CA 签名,则 secTrustEvaluate 返回成功的返回码。但是,对于自定义 CA 签名证书,它返回“kSecTrustResultRecoverableTrustFailure”。
谢谢, bms
【问题讨论】:
-
我能够解决这个问题。我们可以验证自定义 CA 签名的服务器证书,前提是自定义 CA 证书应受信任并安装到设备密钥链中(通过电子邮件或 Safari)
-
@bms 你解决了这个问题吗?
-
@Karthik,是的。我已将我自己的 CA 证书安装到设备密钥链中,并使用 SecTrustEvaluate API 进行验证。