2011-01-11 150 views
3

在iOS上,我知道我们可以使用SecTrustEvaluate()来评估信任。要创建一个信任关系,我们可以从* .p12文件导入它,或者使用一系列证书和一组策略创建它。我也知道为了确保一个服务器不受默认信任,我们可以使用SecTrustSetAnchorCertificates()来扩充SecTrustEvaluate()用于验证服务器证书的根CA列表。将证书链存储在应用程序钥匙串中

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

想到的一个解决方案是从钥匙串中获取全部证书并将它们设置为锚定证书。另一种方法可能是将磁盘上的所有证书链都视为* .p12文件,并在每次应用程序运行时加载一次。从苹果Devforums

回答

2

eskimo1回答了这个如此:

首先,你并不需要证书存储在钥匙串。如果你喜欢,你可以将它们存储在别处(并且使用SecCertificateCreateWithData创建SecCertificateRef)。

其次,你的问题谈论.p12文件,但我不知道这与事情有什么关系。一般而言,您只能使用.p12文件来分发机密信息,而证书不是机密的。

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

相关问题