首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使NSURLCredential forTrust在密钥链中永久化

使NSURLCredential forTrust在密钥链中永久化
EN

Stack Overflow用户
提问于 2014-09-12 21:50:32
回答 1查看 1K关注 0票数 0

我是在应对一个挑战,在这个挑战中,protectionSpace.authenticationMethod == "NSURLAuthenticationMethodServerTrust“。

我正在创建凭据forTrust并将其添加到NSURLCredentialStorage中。

但是每次我重新启动应用程序(在模拟器中运行),我就会再次遇到挑战。在任何一个会话中,它只问一次,因为我将forTrust凭据添加到存储中。另外,我可以看到protectionSpace在NSURLCredential存储中。但是当我重新启动应用程序时,它就消失了,我不得不再次信任服务器。

服务器使用的是自签名证书,我可以通过HTTPS访问。

请帮帮我!

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-13 06:35:26

技术说明TN2232: HTTPS服务器信任评估列出了在iOS应用程序中使用自签名证书的推荐最佳实践。推荐的方法是实现TLS信任评估,比如SSL固定:信任特定的证书或公钥。实现这一点在2014年世界互联网发展委员会会议企业和教育应用程序的构建中得到了演示。不幸的是,SSL固定的代码还没有作为示例代码发布,也没有在幻灯片中提供--只有视频。评估服务器信任的过程在会话中得到了很好的解释。

这并不能解决持久化评估服务器信任的问题。身份验证挑战提供的服务器信任表示SSL事务的状态,因此不能真正以有意义的方式持久化。这就是为什么NSURLCredential使用SecTrustRef的构造函数没有NSURLCredentialPersistence参数的原因:服务器信任必须是每个会话或事务。

尽管如此,URL加载系统确实允许默认处理SSL/TLS服务器信任评估。通常,对于HTTPS连接,您不需要为NSURLAuthenticationMethodServerTrust实现身份验证挑战处理程序。如果默认的信任评估失败,您的连接就会出现一些常见错误--这就是使用自签名证书时所发生的情况,因为证书是不可信的。可以将受信任的、自签名的证书添加到应用程序的信任锚(就像SSL固定的信任评估中所做的那样),从那时起,默认处理将“只起作用”。不幸的是,我目前还没有一个可以测试这个的测试环境。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25817386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档