我有iOS 10 TSL问题(“安全错误:-9801”)。怎么修?

时间:2016-09-17 08:16:49

标签: ios objective-c ssl configuration

我有连接到SSL SOAP服务的App。对于iOS 9.3.5,该应用程序工作正常。从iOS 10我的代码-9801出错。我想这与Apple ATS有关。站点证书配置为TLS 1.0(但我无法管理证书配置)。

我该如何解决这个问题?我想我必须在.plist文件中将其添加为例外。

我还与www.ssllabs.com进行了核对,对于Apple ATS 9 / iOS 9 R部分,它给出了错误:

  

协议或密码套件不匹配

但是在iOS 9上它可以工作。

编辑:

我将域添加到ATS例外(info.plist中),但错误仍然存​​在

3 个答案:

答案 0 :(得分:1)

NSAppTransportSecurity   NSAllowsArbitraryLoads       

info.plist中添加此键 - 值,这意味着它将允许所有类型的加载。如果您有特定域,则应在info.plist中添加该特定域。

更新:

如果您需要安全连接,那么您应该管理info.plist喜欢,

     <key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
<dict>
    <key>yourdomain.com</key>
    <dict>
        <!--Include to allow subdomains-->
        <key>NSIncludesSubdomains</key>
        <true/>
        <!--Include to allow HTTP requests-->
        <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
        <true/>
        <!--Include to specify minimum TLS version-->
        <key>NSTemporaryExceptionMinimumTLSVersion</key>
        <string>TLSv1.1</string>
    </dict>
</dict>

或者您应该使用已集成ssl的网络服务!

答案 1 :(得分:1)

nscurl 中使用ATS诊断模式获取ATS字典的建议内容:

nscurl --ats-diagnostics https://yourdomain.com --verbose

答案 2 :(得分:0)

我找到了临时解决方法,但我将继续调查TSL证书配置。

我为我们的服务添加了URL ATS例外(更多信息here)。然后我必须发现iOS 10中的ATS配置已更改,异常必须写为TSLv1.0而不是1.0(我在其他站点使用异常示例,其中1.0是内容) - 10x到this answer。< / p>