繁体   English   中英

将NSURLCredential forTrust永久保存在钥匙串中

[英]Make NSURLCredential forTrust permanent in the keychain

我正在应对一个挑战,其中protectionSpace.authenticationMethod ==“ NSURLAuthenticationMethodServerTrust”。

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

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

服务器正在使用自签名证书,我可以通过HTTPS访问

请帮忙!

提前致谢。

技术说明TN2232:HTTPS服务器信任评估列出了在iOS应用程序中使用自签名证书的建议最佳实践。 推荐的方法是实现TLS信任评估,例如SSL固定:信任特定的证书或公钥。 在WWDC 2014的“ 构建企业和教育应用程序”中演示了如何实现这一点。 不幸的是,用于SSL固定的代码尚未作为示例代码发布,也没有在幻灯片中可用-仅用于视频。 会话中很好地解释了评估服务器信任度的过程。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM