在应用程序密钥链中存储证书链

时间:2011-01-11 15:14:29

标签: iphone ios ssl-certificate keychain truststore

在iOS上,我知道我们可以使用SecTrustEvaluate()评估信任。要创建信任,我们要么从* .p12文件导入它,要么使用证书数组和一组策略创建它。

我也知道,为了确保默认情况下不受信任的服务器是可信的,我们可以使用SecTrustSetAnchorCertificates()来扩充SecTrustEvaluate()用于验证服务器证书的根CA列表。 p>

现在,我如何确保在后续发布时可以使用这些锚证书?我可以在应用程序密钥链中存储证书,密钥和身份,但不能存储证书链。即使我将所有证书存储在链中,我如何知道哪些证书将用作锚证书?

我想到的一个解决方案是从钥匙串中获取所有证书并将其设置为锚证书。另一种方法可能是磁盘上的所有证书链都是* .p12文件,并在每次运行时加载一次。

1 个答案:

答案 0 :(得分:2)

来自Apple Devforums的eskimo1回答了这个问题:

首先,您不需要将证书存储在钥匙串中。如果您愿意,可以将它们存储在其他位置(并使用SecCertificateCreateWithData创建SecCertificateRef)。

其次,你的问题是关于.p12文件,但我不确定这与事情有什么关系。通常,您只使用.p12文件来分发机密信息,而且证书不是保密的。

最后,您可以存储证书链,只需存储该链中每个证书的持久性引用(或存储每个证书的实际数据)。