【问题标题】:About ATS SSL in iOS 9 release version关于 iOS 9 发行版中的 ATS SSL
【发布时间】:2015-09-17 03:48:45
【问题描述】:

我的应用程序使用 http,并且尚未针对 iOS9 进行更新。今天我在 iPad 上升级到 iOS9,我所有的应用程序仍在使用 http。似乎苹果在 iOS9 发布版本中并没有强制使用 https。有谁知道苹果什么时候会强制执行或苹果不会执行?出于某种原因,我不想更新我的应用。

【问题讨论】:

  • 也许他正在等待更好的答案。当前的解释很多,但并不实用,例如,它们没有解释如何“将异常添加到info.plist”中。

标签: ios ios9


【解决方案1】:

在基于 Xcode 7 构建的应用上启用了 ATS,但在使用早期版本的 Xcode 构建的应用上不启用。这是为了防止成千上万的应用在 iOS 9 上“崩溃”。

如果您使用 Xcode 7 重新构建您的应用,将为您的应用启用 ATS,您需要将后端更改为使用 HTTPS 或将例外添加到 info.plist。

因此,基本上,ATS 对于新的/更新的应用程序是“强制的”(或者您需要明确部分或完全禁用它),但对于旧应用程序不是。

【讨论】:

  • 感谢您的评论!我想投票赞成你的答案,但缺乏声誉,对不起!
【解决方案2】:

iOS 9 强制使用 HTTPS 的连接为 TLS 1.2 以避免最近的漏洞。在 iOS 8 中,甚至支持未加密的 HTTP 连接,因此旧版本的 TLS 也不会造成任何问题。作为一种解决方法,您可以将此代码 sn-p 添加到您的 Info.plist:

<key>NSAppTransportSecurity</key>  
  <dict>  
  <key>NSAllowsArbitraryLoads</key>  
  <true/>  
  </dict>  

【讨论】:

    【解决方案3】:

    当前的应用程序在 iOS 9 上运行良好。ATS SSL 要求在为 iOS 9 构建的 wot 应用程序中启动。

    来自App Transport Security Technote

    默认行为:
    所有使用 NSURLConnection、CFURL 或 NSURLSession API 的连接都使用为 iOS 9.0 或更高版本以及 OS X 10.11 或更高版本构建的应用程序中的应用传输安全默认行为。不符合要求的连接会失败。

    关键部分是:为 iOS 9.0 或更高版本构建的应用程序

    这些是应用传输安全要求:

    • 服务器必须至少支持传输层安全 (TLS) 协议版本 1.2。
    • 连接密码仅限于提供前向保密的密码(请参阅下面的密码列表。)
    • 必须使用 SHA256 或更好的签名哈希算法对证书进行签名,使用 2048 位或更大的 RSA 密钥或 256 位或更大的椭圆曲线 (ECC) 密钥。
    • 无效的证书会导致硬故障和无连接。

    【讨论】:

      猜你喜欢
      • 2015-09-22
      • 2015-12-23
      • 2016-06-07
      • 1970-01-01
      • 2015-11-13
      • 2016-05-13
      • 2016-01-27
      • 2017-01-30
      相关资源
      最近更新 更多