6

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

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

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

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

但这并不是我想要的。

有什么建议么?

4

1 回答 1

3

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

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

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

将它与“AdvancedURLConnections”示例代码ServerTrustChallengeHandler类结合起来,你应该很高兴。


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

于 2012-10-15T10:28:06.110 回答