gpt4 book ai didi

ios - 将 NSURLCredential forTrust 永久保存在钥匙串(keychain)中

转载 作者:行者123 更新时间:2023-11-29 02:40:56 24 4
gpt4 key购买 nike

我正在响应 protectionSpace.authenticationMethod == "NSURLAuthenticationMethodServerTrust"的挑战。

我正在为 Trust 创建凭证并将其添加到 NSURLCredentialStorage。

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

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

请帮忙!

提前致谢。

最佳答案

Technical Note TN2232: HTTPS Server Trust Evaluation列出了在 iOS 应用程序中使用自签名证书的推荐最佳实践。推荐的方法是像 SSL 固定一样实现 TLS 信任评估:信任特定的证书或公钥。在 WWDC 2014 session 中演示了实现这一点 Building Apps for Enterprise and Education .不幸的是,SSL pinning 的代码尚未作为示例代码发布,也没有在幻灯片中提供——只有视频。 session 中很好地解释了评估服务器信任的过程。

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

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

关于ios - 将 NSURLCredential forTrust 永久保存在钥匙串(keychain)中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25817386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com