iOS的ATS配置那些事

来源:互联网 发布:温州管家婆软件 编辑:程序博客网 时间:2024/06/03 21:45

iOS的ATS配置


  •  

    一、ATS是什么?


    ATS(App Transport Security)是为了提高App与服务器之间安全传输数据一个特性,这个特性从iOS9和OSX10.11开始出现,它默认需要满足以下几个条件:

    1、服务器TLS版本至少是1.2版本;

    2、连接加密只允许几种先进的加密;

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

     

    二、使用默认的ATS设置要满足哪些条件

     

    三个条件:

    1、https 要基于TLS 1.2或以上版本;

    2、证书的加密的算法要至少要SHA256的算法,用至少是2048位的RSA的key 或至少是256位的Elliptic-Curve(ECC)的key所产生的证书;

    3、加密算法也是有限制,就是ATS中的ForwardSecrecy(超前的密码保护算法)配置项,需要在以下列表中:

     

    如果不符合上述3各要求,请求接口会报错:

     

    NSURLSession/NSURLConnectionHTTP load failed (kCFStreamErrorDomainSSL, -9802)

     

    三、如何适配


    1、让服务端或运维的小伙伴配置下tomcat或nginx的TSL版本和证书算法,更新最新的SDK,比如友盟统计SDK刚刚可以支持ATS了,新浪微博等用的还是TLS1.0版本。需要配置一下。

    2、公司证书算法达不到苹果的要求,运维的童鞋又不想改,因为苹果只是禁用了NSAllowsArbitraryLoads选项,我们可以通过其他的选项来兼容以前的接口。如下:

     


    四、ATS配置说明


    详细说明:

     

    NSAppTransportSecurity: 配置ATS的跟属性。


    NSAllowsArbitraryLoads : 是否允许所有的连接,包括http。默认值是No,如果设置成YES,就可以使用http了。2017年1月1号后该选项被禁用。

     

    NSExceptionDomains: 用于配置例外的域名,即在该配置项中的域不需要通过ATS的验证。


    < domain-name-for-exception-as-string > : 需要添加例外的域名字符串,如:baidu.com


    NSExceptionMinimumTLSVerion :最低支持的TSL的版本号,可用的配置有TLSv1.0、TLSv1.1以及TLSv1.2三个配置项。


    NSExceptionRequiresForwardSecrecy :是否满足上文中列举的加密算法。因为我们服务端不支持这些算法,所以我们设置为NO。


    NSExceptionAllowsInsecureHTTPLoads : 是否为HTTPS的服务器。用这个配置可用访问那些没有证书、自签名证书、过期证书以及证书与域名匹配不上的服务器。默认值是NO。


    NSIncludesSubdomains : 子域名是否使用同样的配置。默认值是NO。如果设置为YES,则子域名如api.baidu.com也都使用相同的配置


    NSThirdPartyExceptionMinimumTLSVersion : 如果是域名为第三的域名,且开发人员无法控制的情况下进行配置。设置最低支持的TSL的版本号


    NSThirdPartyExceptionRequiresForwardSecrecy : 如果是域名为第三的域名,且开发人员无法控制的情况下进行配置ForwardSecrecy。

     

    五、检测接口是否满足苹果的ATS要求的两种方法


    1、腾讯云提供的检测页面检测


    2、终端输入 nsurl --ats-diagnostics --verbose 你的接口地址:


    里面会详细说明你的证书哪点不符合ATS要求,当然下面自己制作证书去实现HTTPS的,检测不通过的,所以我觉得审核会被拒。
    这种方法配置好了,在手机端就什么都不用配置就可以请求了。

     

    六、苹果官方信任证书里说到有三种证书


    1、可信的根证书用于建立信任链,以验证由可信的根签署的其他证书,例如,与 Web 服务器建立安全连接。当 IT 管理员创建 iPhone、iPad 或 iPod touch 的配置描述文件时,无需提供这些可信的根证书。

    2、始终询问的证书不受信任,但不受阻止。使用其中一个证书时,系统将提示您选择是否信任该证书。

    3、已阻止的证书视为被盗用,将不再受信任。

0 0