繁体   English   中英

iOS App传输安全性问题

[英]iOS App Transport Security issue

TL; DR:

我有一个iOS应用程序连接到符合新ATS功能的最低要求一个web服务。 我已经修改了Info.plist以允许例外,因此我的应用程序仍可以连接到Web服务。 iOS 9上的NSURLSession / NSURLConnection HTTP加载失败 )在开发中可以正常工作,但是, 我刚刚推送到商店的更新仍然无法访问Web服务。 我不知道断开发生在哪里或如何解决。

===

首先,这都是在模拟器中发生的,当我直接在xcode中部署到ipad时,行为相同:

我正在尝试通过iOS应用中的https连接到Web服务。 现在,每次尝试连接到Web服务时都会出现此错误:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

据我了解,这是由于新的ATS功能不允许连接而发生的。 我已通过将修复程序( iOS 9上的NSURLSession / NSURLConnection HTTP加载失败 )应用于我的Info.plist文件来确认这一点:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>mydomain.com</key>
    <dict>
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <key>NSIncludesSubdomains</key>
      <true/>
      </dict>
  </dict>
</dict>

一旦输入,它就可以毫无问题地连接到Web服务。

显然,虽然我的服务器符合TLS 1.2要求和密码要求,但它不符合签名要求( https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html #// apple_ref / doc / uid / TP40009251-SW35

但是,我已经对我的应用程序进行了更新并推送到应用程序商店,但是我的应用程序的商店版本无法连接到Web服务。 从xcode部署到本地计算机上时,相同的代码可以很好地构建并在设备上运行,但是商店中的版本似乎忽略了.plist修复程序。 我怎样才能解决这个问题? 这对我完全没有意义。

尝试使用此版本的info.plist配置:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>www.example.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>
    </dict>
</dict>

编辑:尝试也将NSExceptionRequiresForwardSecrecy指定为NO

尝试将以下代码添加到您的info.plist

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

有关更多信息,请参见链接: 苹果论坛

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM