AFNetworking 3.0 HTTPS CA证书验证

作者: XLsn0w | 来源:发表于2016-12-01 20:02 被阅读188次

    设置AFN请求管理者的时候 添加 https ssl 验证。

    // 1.获得请求管理者

    AFHTTPSessionManager*manager = [AFHTTPSessionManagermanager];

    // 2.加上这个函数,https ssl 验证。

    [managersetSecurityPolicy:[selfcustomSecurityPolicy]];

    // https ssl 验证函数

    - (AFSecurityPolicy*)customSecurityPolicy {

    // 先导入证书 证书由服务端生成,具体由服务端人员操作

    NSString*cerPath = [[NSBundlemainBundle]pathForResource:@"xxx"ofType:@"cer"];//证书的路径

    NSData*cerData = [NSDatadataWithContentsOfFile:cerPath];

    // AFSSLPinningModeCertificate 使用证书验证模式

    AFSecurityPolicy*securityPolicy = [AFSecurityPolicypolicyWithPinningMode:AFSSLPinningModeCertificate];

    // allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO

    // 如果是需要验证自建证书,需要设置为YES

    securityPolicy.allowInvalidCertificates=YES;

    //validatesDomainName 是否需要验证域名,默认为YES;

    //假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。

    //置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。

    //如置为NO,建议自己添加对应域名的校验逻辑。

    securityPolicy.validatesDomainName=NO;

    securityPolicy.pinnedCertificates= [[NSSetalloc]initWithObjects:cerData,nilnil];

    returnsecurityPolicy;

    }

    三.关于证书 参考文章:http://www.2cto.com/Article/201510/444706.html

    服务端给的是crt后缀的证书,其中iOS客户端用到的cer证书,是需要开发人员转换:

    1.证书转换

    在服务器人员,给你发送的crt证书后,进到证书路径,执行下面语句

    openssl x509-in 你的证书.crt-out 你的证书.cer-outform der

    这样你就可以得到cer类型的证书了。双击,导入电脑。

    2.证书放入工程

    1、可以直接把转换好的cer文件拖动到工程中。

    2、可以在钥匙串内,找到你导入的证书,单击右键,导出项目,就可以导出.cer文件的证书了

    参考链接:http://www.jianshu.com/p/97745be81d64。

    四.在info.plist去掉之前允许http加载的代码 就是删除下面的代码(么有的就省了这一步)

    NSAppTransportSecurity

    NSAllowsArbitraryLoads

    相关文章

      网友评论

      • 瓜而不皮很灵性:我们服务端给的证书是一个cer,一个jks,我按照你这样导入了证书,但是报错code=-999,连接不通,这个会是什么情况。
        XLsn0w:@大橙子在来的路上 .cer 双向验证
      • liwb:info.plist去掉http允许,那么用SDWebImage加载网络图片怎么办?
        XLsn0w:@liwb SDWebImage 目前在4.0.0 beta2 很快也会支持HTTPS 当然用afn也能缓存图片

      本文标题:AFNetworking 3.0 HTTPS CA证书验证

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