第 3 方应用程序能否访问 iPhone 的钥匙串(keychain)以向其添加 X509 证书?如果是,如何实现?
如果没有,它可以访问钥匙串(keychain)只是为了从中读取证书吗?
基本上,我需要的是:
1) 我的应用程序需要访问使用未经任何受信任 CA 签名的证书的 https 站点。尝试通过 https 连接时,出现异常。
2)如果我能以编程方式将根证书添加到钥匙串(keychain),那就太好了;如果用户可以通过 Safari 访问该站点,接受其证书,然后使用我的应用程序访问该站点就足够了。
到目前为止,我一直在使用下面的接口(interface)来超越https:
@interface NSURLRequest (DummyInterface)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host;
+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString*)host;
@end
但这并不是我想要的。
有什么建议吗?
最佳答案
This Apple document应该记录足够的东西以允许将自签名证书(或自签名证书颁发机构)添加到钥匙串(keychain)中,并使其可信。不过我没有测试它。 Source
另见 top answer on this question .但是,它似乎并没有真正验证证书的有效性。 Cocoanetics 还记录了 how to use NSURLConnection with self-signed certificates ,同样似乎也没有验证有效性。
因此,您几乎可以肯定希望遵循 Apple 的说明。 “Extracting and Evaluating an Identity From a *.P12 file”部分似乎包含一个关于如何导入证书的完整示例,甚至是一个受密码保护的证书。
将其与 "AdvancedURLConnections" sample code 合并和 ServerTrustChallengeHandler
类,您应该可以开始了。
关于iphone - 在 iPhone 的钥匙串(keychain)中存储和访问 x509 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10587883/