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

3
在iOS上,我知道我们可以使用SecTrustEvaluate()评估信任。要创建信任,我们可以从*.p12文件中导入它,或者使用证书数组和一组策略来创建它。
我还知道,为了确保不被默认信任的服务器得到信任,我们可以使用SecTrustSetAnchorCertificates()来增加根CA列表,以便SecTrustEvaluate()用于验证服务器的证书。
现在,我该如何确保这些锚定证书在后续启动时可用?我可以将证书、密钥和身份存储在应用程序钥匙串中,但无法存储证书链。即使我将链中的所有证书都存储起来,我怎么知道哪些证书应作为锚定证书使用?
一个想到的解决方案是从钥匙串中获取所有证书,并将它们设置为锚定证书。另一种方法可能是将磁盘上所有证书链作为*.p12文件加载,并在每次应用程序运行时加载它们。
1个回答

2

来自Apple Devforums的eskimo1回答如下:

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

其次,您的问题涉及.p12文件,但我不确定这与事情有何关系。通常,您只使用.p12文件来分发机密信息,而证书并不机密。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接