【问题标题】:iOS9 NSAppTransportSecurity with s3.amazon.comiOS9 NSAppTransportSecurity 与 s3.amazon.com
【发布时间】:2015-12-16 02:43:45
【问题描述】:

我正在 iOS9 中测试一个应用程序,并在 ATS 从 amazon.com 加载图像时遇到 SSL 错误。我所有的东西都是通过 https 传递的,但我仍然遇到问题。

我添加了正确的 ATS 密钥(在另一个应用程序上工作)。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>amazonaws.com</key>
        <dict>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

我一直在论坛、adc 和 SO 上逛遍,但我没有任何运气。

我已尝试完全删除 ATS,但仍然遇到同样的错误。

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

错误:

NSURLSession/NSURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9802) 错误域=NSURLErrorDomain 代码=-1200 “发生 SSL 错误,无法与服务器建立安全连接。” UserInfo={NSURLErrorFailingURLPeerTrustErrorKey=, NSLocalizedRecoverySuggestion=您是否仍要连接到服务器?, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9802, NSErrorPeerCertificateChainKey={type = immutable, count = 3, values = ( 0: 1: 2: )}, NSUnderlyingError=0x7ffe70e2c690 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 “发生 SSL 错误,无法与服务器建立安全连接。” UserInfo={NSErrorFailingURLStringKey=https://redacted.s3.amazonaws.com/14B78421-84F1-48D1-A8F4-73B688102EE7-21502-00003598C1B6C883_thumbnail.jpg, NSLocalizedRecoverySuggestion=你还想连接服务器吗?, _kCFNetworkCFStreamSSLErrorOriginalValue=-9802, kCFStreamPropertySSLPeerCertificates={type = immutable, count = 3, values = ( 0: 1: 2: )}, _kCFStreamPropertySSLClientCertificateState=0, kCFStreamPropertySSLPeerTrust=, NSLocalizedDescription=发生 SSL 错误,无法与服务器建立安全连接。, _kCFStreamErrorDomainKey=3, NSErrorFailingURLKey=https://redacted.s3.amazonaws.com/14B78421-84F1-48D1-A8F4-73B688102EE7-21502-00003598C1B6C883_thumbnail.jpg, _kCFStreamErrorCodeKey=-9802}}, NSLocalizedDescription=SSL发生错误,无法与服务器建立安全连接。, NSErrorFailingURLKey=https://redacted.s3.amazonaws.com/14B78421-84F1-48D1-A8F4-73B688102EE7-21502-00003598C1B6C883_thumbnail.jpg, NSErrorFailingURLStringKey=https://redacted.s3.amazonaws.com/14B78421-84F1-48D1-A8F4-73B688102EE7-21502-00003598C1B6C883_thumbnail.jpg, NSErrorClientCertificateStateKey=0}

静态文件:AWS 亚马逊
主持人:Heroku
后端:Django
API:Django Rest 框架

我已经尝试了在 ATS 上可以找到的所有配置、清理/重置/重建、修改 Django 请求(最初它们包括查询字符串身份验证)等等。我对此感到困惑并被阻止。

【问题讨论】:

标签: ios django ssl amazon-s3 ios9


【解决方案1】:

我必须像您一样将 amazonaws.com 添加到 Info.plist,并使用 SDWebImageAllowInvalidSSLCertificates 作为 sd_setImageWithURL: 方法的选项才能使其正常工作。

【讨论】:

    【解决方案2】:

    在我对 https 链接进行子字符串替换后,我收到消息说 ATS 阻止了它们。我知道我在 Info.plist 中有正确的键 - 所以我认为它必须是某个地方的另一个 Info.plist。

    事实证明,资源中有一个 Info.plist,但它没有做任何事情。我们必须将 ATS 键添加到 Target 面板上的 Info 选项卡中。不是 100% 确定这两者有什么区别,因为我过去一直编辑 Info.plist。

    【讨论】:

      猜你喜欢
      • 2015-10-13
      • 2015-12-15
      • 2015-12-18
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多