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)

  • 相关阅读:
    CSS3 target伪类简介
    不用position,让div垂直居中
    css3 在线编辑工具 连兼容都写好了
    a标签伪类的顺序
    oncopy和onpaste
    【leetcode】1523. Count Odd Numbers in an Interval Range
    【leetcode】1518. Water Bottles
    【leetcode】1514. Path with Maximum Probability
    【leetcode】1513. Number of Substrings With Only 1s
    【leetcode】1512. Number of Good Pairs
  • 原文地址:https://www.cnblogs.com/developer-qin/p/6186188.html
Copyright © 2011-2022 走看看