iOS-Https适配

作者: 吃屁的小栗子 | 来源:发表于2016-12-28 10:27 被阅读323次

    在WWDC2016公告中,苹果建议开发商尽快使用ATS协议。该协议是
    iOS9和macOS (OS X) 10.11的一个特性。

    App Transport Security,即ATS,是苹果公司在iOS 9和Mac OS X 10.11(El Capitan)操作系

    苹果指出ATS协议可以防止意外泄露个人信息,以及为应用程序提供默认安全行为。

    ATS安全标准的要求

    服务器必须启用HTTPS,且TLS版本至少是1.2版本连接加密只允许几种先进的加密算法 证书必须使用SHA256或者更好的哈希算法进行签名,要么是2048位或者更长的RSA密钥,要么就是256位或更长的ECC密钥。

    大家可以打开终端输入nscurl --verbose --ats-diagnostics【请求地址】 来检查是否符合ATS要求,如果全部PASS则可以使用

    首先给大家普及一下Https 相关知识

    HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。

    客户端相关操作

    客户端从iOS 9 SDK起默认开启ATS,一般无需进行代码改造。

    如果在plist文件里面修改过App Transport Security Settings-Allow Arbitrary Loads = YES 需要改回为NO。

    简单的如果客户端不进行证书的验证只需要将请求更改为https即可,如果设置完之后可以正常访问则可以正常使用。

    稍微复杂点的有客户端的单向验证和服务端与客户端的双向验证。

    单向认证

    使用AFNetworking3.0 网络请求
    需要将cer格式证书添加进项目

      //AF加上这句和下面的方法
      manager.securityPolicy = [self customSecurityPolicy];
    
    #pragma mark 证书验证
    - (AFSecurityPolicy*)customSecurityPolicy { 
        // 证书导入
        NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"证书名称" ofType:@"cer"]; 
        NSData *cerData = [NSData dataWithContentsOfFile:cerPath];   
    
        // 使用证书验证模式
        AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];   
    
        // 是否允许证书无效 默认为NO
        // 如果是自建证书则设置为YES
        securityPolicy.allowInvalidCertificates = NO; 
    
        // 是否验证域名 默认为YES 不建议修改
        securityPolicy.validatesDomainName = YES;
    
        NSSet *set = [NSSet setWithObjects:certData, nil];
        securityPolicy.pinnedCertificates = set;
    
        return securityPolicy;
    }
    

    相关文章

      网友评论

        本文标题:iOS-Https适配

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