在iPhone的钥匙串中存储和访问x509证书



第三方应用程序可以访问iPhone的钥匙串以向其添加X509证书吗?如果是,如何做?
如果没有,它是否可以访问钥匙串只是为了从中读取证书?

基本上,我需要的是:
1) 我的应用程序需要访问 HTTPS 站点,该站点使用未由任何受信任的 CA 签名的证书。 尝试通过 https 连接时,出现异常。
2)如果我能以编程方式将根证书添加到钥匙串中,那就太好了;如果用户可以通过 Safari 访问站点,接受其证书,然后使用"我的应用程序"访问站点,那就足够了。

到目前为止,我一直在使用以下接口来超越https:

@interface NSURLRequest (DummyInterface)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host;
+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString*)host;
@end

但这不完全是我想要的。

有什么建议吗?

此 Apple 文档应记录足够的内容,以允许将自签名证书(或自签名证书颁发机构)添加到钥匙串中,并使其受信任。不过,我没有测试它。源

另请参阅有关此问题的最佳答案。但是,它似乎并没有实际验证证书的有效性。Cocoanetics还记录了如何将NSURLConnection与自签名证书一起使用,同样似乎也没有验证其有效性。

因此,您几乎肯定希望遵循Apple的指示。"从 * 中提取和评估身份。P12 文件"部分似乎包含有关如何导入证书的完整示例,即使是受密码保护的证书。

将其与"AdvancedURLConnections"示例代码和ServerTrustChallengeHandler类相结合,您应该很高兴。


这也是Vanja Komadinović的一个更完整的例子。

最新更新