由于 S3 目前不完全兼容,根据AWS 博客上的这篇文章,他们的官方建议是通过将这组密钥添加到您的Info.plist
:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>amazonaws.com</key>
<dict>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
<key>amazonaws.com.cn</key>
<dict>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
2015 年10 月 27 日更新:正如 Pol 在评论中指出的那样,尽管这是 AWS 的官方回答,但支持论坛中的一位 Apple 工程师表示这实际上是一个错误:
事实证明,NSExceptionRequiresForwardSecrecy 放宽了 SHA-2/256 要求的事实是一个错误;NSExceptionRequiresForwardSecrecy 的预期行为是应用程序传输安全技术说明中记录的行为,即它应该只启用特定的密码套件。
我们的计划是在未来的某个时候修复这个错误。我们希望以某种兼容的方式解决此问题,因此错误地使用 NSExceptionRequiresForwardSecrecy 禁用 SHA-2/256 要求的人不会破坏。然而,预测未来始终是一个挑战。这让我们想到了你现在应该做的事情。[这篇文章的前一个版本给出了不太具体的建议。以下是收紧事情的更新。] 在与 ATS Engineering 讨论后,我们的建议是:
如果您使用特定的托管服务,您应该咨询您的托管服务以获得最新建议。
在这种情况下,除了 SHA-2/256 证书签名要求之外,服务器与 ATS 完全兼容,我们建议您使用 NSExceptionAllowsInsecureHTTPLoads 准确记录这种情况。
您应该尽快尝试使您的服务器与 ATS 完全兼容。
发生这种情况时,您应该使用更安全的 ATS 设置更新您的应用程序。
我应该强调 NSExceptionAllowsInsecureHTTPLoads 实际上并不是不安全的。它与当前在 iOS 8 上运行的应用程序一样安全。相反,这意味着您的应用程序无法从 ATS 提供的额外安全性中受益。分享和享受
强调我的。请注意,当前的计划是以一种不会破坏习惯于解决此问题的人的行为的方式修复错误NSExceptionRequiresForwardSecrecy
,因此上述仍然是一个可行的答案。