【问题标题】:iOS 9 ATS - Disable Forward Secrecy for all domainsiOS 9 ATS - 为所有域禁用前向保密
【发布时间】:2016-05-13 09:26:53
【问题描述】:

在 iOS 9 中启用 ATS 后,我的许多客户都无法满足前向保密要求。但是,它们可以满足 https 和 TLS 1.2 的要求。因此,我想放宽前向保密要求,同时保持 https 和 TLS 1.2 到位。

我想知道是否有人想出一种方法来使用 NSExceptionRequiresForwardSecrecy 或 NSThirdPartyExceptionRequiresForwardSecrecy 来禁用所有域的前向保密。

我尝试将 * 用于 NSExceptionDomains 或 *.com,但是当我使用它时,问题链接不起作用。当我使用它的 domain.com 时,问题链接将加载。我正在查看上面的Apple Docs,但没有看到任何方法可以实现我的目标。

是否可以只为所有域禁用前向保密,就像您可以通过将 NSAppTransportSecurity/NSAllowsArbitraryLoads 设置为 true 来完全禁用 ATS 一样?

谢谢!

【问题讨论】:

  • 我认为这是不可能的。在 ATS 例外中列出所有客户的域或允许任意加载。您也可以两者都做,因此 ATS 将对已知域使用 TLS 1.2(但没有前向保密),而对未知域禁用。
  • Alex,我得出了同样的结论,我们最终在域基础上添加了对异常的支持。

标签: ios app-transport-security nsapptransportsecurity


【解决方案1】:

是的,这是可能的。您可能至少有一个您肯定会连接到的域。如果不是这样,请尝试使用任何可靠的网站(google.com、facebook.com 等)。 您应该通过以下方式指定NSAppTransportSecurity 配置为此域添加NSExceptionDomains 规则:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>google.com</key>   
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>                
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
        </dict>
    </dict>

仅供参考,facebook 应用使用 NSAppTransportSecurity 的相同配置。

【讨论】:

  • 我能够使用您上面列出的设置使用 TLS 1.2 连接到我的 Web 服务器,但是,在我的授权过程中,从 Web 服务器生成的票证比为生成的票证服务器短得多我的 Windows 应用程序(此 Windows 票证正在运行),因此当我使用票证向服务器发布另一个呼叫时,服务器无法识别票证。我做错了什么?
【解决方案2】:

有可能,请尝试关注。

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

你甚至可以添加特定的异常,

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>testdomain.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <false/>
            <key>NSExceptionAllowInsecureHTTPSLoads</key>
            <false/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.2</string>
            <key>NSThirdPartyExceptionAllowInsecureHTTPSLoads</key>
            <false/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <true/>
            <key>NSThirdPartyExceptionMinimumTLSVersion</key>
            <string>TLSv1.2</string>
            <key>NSRequiresCertificateTransparency</key>
            <false/>
        </dict>

        ...

    </dict>
</dict>

【讨论】:

    猜你喜欢
    • 2015-11-13
    • 2015-12-23
    • 2016-06-07
    • 2017-01-08
    • 2015-11-30
    • 2017-12-26
    • 1970-01-01
    • 2016-10-30
    相关资源
    最近更新 更多