zoukankan      html  css  js  c++  java
  • ATS

    一)

    起因:由于苹果规定2017年1月1日以后,所有APP都要使用HTTPS进行网络请求。

    之前,可以在Info.plist中禁用ATS功能,按如下设置即可。

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

    1月1日后,也许这样设置没有用了。

    二)。

     将项目中的  NSAllowsArbitraryLoads 设为No。之后发现项目跑不通,报错“发生了SSL错误”

    用命令发现,公司的部分URL不满足ATS要求。

    /usr/bin/nscurl --ats-diagnostics [--verbose] URL

     

    ATS检测网站:https://www.qcloud.com/product/ssl

     

     

    苹果强制升级的HTTPS需要满足iOS9中新增App Transport Security(简称ATS)特性:

     

    1.必须是苹果信任的CA证书机构颁发的证书

    2.后台传输协议必须满足: TLS1.2 

    3.签字算法只能是下面的一种:

    TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

    TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384

    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA

    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256

    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA

    TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

    TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

     

    4.证书必须使用SHA256或者更好的哈希算法进行签名,要么是2048位或者更长的RSA密钥,要么就是256位或更长的ECC密钥。

     

     

    三) 

    其中一个服务器,通过添加TLS1.2 ,之后跑通了ATS,但是APP仍然报错。

     

    最后发现,是因为虽然跑通了ATS,但是证书不受苹果信任,需要将证书导入项目中。

    导出证书方法如下:

     

     

    openssl s_client -connect www.google.com:443 </dev/null 2>/dev/null | openssl x509 -outform DER > https.cer"

    并且在代码中使用我们的cer

            NSString *cerPath                = [[NSBundle mainBundle] pathForResource:@"XXXXX" ofType:@"cer"];
            NSData *certData                 = [NSData dataWithContentsOfFile:cerPath];
            AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
            [securityPolicy setAllowInvalidCertificates:NO];
            [securityPolicy setPinnedCertificates:@[certData]];
            [securityPolicy setValidatesDomainName:YES];
            
            manger.securityPolicy = securityPolicy;

     

    参考网址:

    https://www.qcloud.com/product/ssl

    苹果ATS(强制HTTPS)审核新政解码

    关于 iOS 10 中 ATS 的问题

    正确使用AFNetworking的SSL保证网络安全

    关于iOS9中的App Transport Security相关说明及适配(更新于2016.7.1)

  • 相关阅读:
    !function() {}()
    element.dataset API
    正则匹配 数字和英文状态下的逗号
    《vim实用技巧》读书笔记
    ajax分页
    smarty分页类
    数组排序
    数组大类
    自动刷新价格
    简单购物车
  • 原文地址:https://www.cnblogs.com/developer-qin/p/6186188.html
Copyright © 2011-2022 走看看