2017 ios适配ATS

作者: moodi | 来源:发表于2016-12-29 15:53 被阅读63次

    iOS10 从2017年1月1日起苹果不允许我们通过这个方法跳过ATS,也就是说强制我们用HTTPS,如果不这样的话提交App可能会被拒绝。但是我们可以通过NSExceptionDomains来针对特定的域名开放HTTP可以容易通过审核。)

    以前我们是这样做的
    <key>NSAppTransportSecurity</key>
    <dict> <key>NSAllowsArbitraryLoads</key>
    <true/>
    </dict>

    2017年1月1日以后这个方法被禁止掉了

    一、使用默认的ATS设置要满足:
    1、https 要基于TLS 1.2或以上版本。
    2、证书的加密的算法要至少要SHA256的算法,用至少是2048位的RSA的key 或至少是256位的Elliptic-Curve(ECC)的key所产生的证书
    3、加密算法也是有限制,就是ATS中的ForwardSecrecy(超前的密码保护算法)配置项,需要在以下列表中,详见:苹果文档
    TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

    如果不符合上述3各要求,请求接口会报错:
    NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

    解决办法
    1.开启https 这个很简单, 搞服务器的都可以搞定
    2.我们需要一个SSL证书,自建证书达不到苹果要求,老板又不肯花钱,只能找找免费证书了.
    阿里云免费证书 ,有效期1年,1年后要不要付费,谁知道1年后会怎样,目前还是通过审核要紧.
    https://common-buy.aliyun.com/?commodityCode=cas#/buy
    3.按照阿里云设置域名
    4.部署到服务器上,有点要注意,要求服务器同事设置客户端免证书校验,这样我们方便,客户端不用设置证书了.
    5.发现阿里云免费证书TLS 1.0 苹果要求TLS 1.2或以上版本,做以下设置
    <key>NSAppTransportSecurity</key>
    <dict> <key>NSExceptionDomains</key> <dict>
    <key>xxxx.com</key>
    <dict>
    <key>NSExceptionMinimumTLSVersion</key>
    <string>TLSv1.0</string>
    <key>NSIncludesSubdomains</key>
    <true/>
    </dict>
    </dict>
    </dict>
    大功告成!!

    相关文章

      网友评论

        本文标题:2017 ios适配ATS

        本文链接:https://www.haomeiwen.com/subject/bpcpvttx.html