iphone - 在 iPhone 的钥匙串(keychain)中存储和访问 x509 证书

标签 iphone ssl https

第 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 类,您应该可以开始了。


这里还有a more complete example by Vanja Komadinović .

关于iphone - 在 iPhone 的钥匙串(keychain)中存储和访问 x509 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10587883/

相关文章:

wordpress - 在注册时强制使用 SSL 但在非注册页面上删除 SSL

java - 无法从 Maven : cert error 下载项目依赖项 (db4o)

css - 通过https加载css文件后通过https加载图片

java - 禁用 JAVA SSL3

c# - ssl时如何忽略证书检查

https - http_referer 使用 https 丢失

.net - 如何使用.NET编写iOS Push Notification服务器

iphone - 通过 HTTP 发送 10,000 个 double 的最佳方式

iphone - 更改 UIView 的位置不起作用

iphone - 在 iOS 7 中为 UITableViewCell 使用背景 View 覆盖默认删除按钮