zoukankan      html  css  js  c++  java
  • AFNetworking 请求HTTPS时 SSL的身份验证设置

    AFN如何验证SSL呢?

    第一web端服务器必须要提供一个叫SSL的证书,证书里面包含有一个叫.crt的文件,你需要将它转换成.cer的格式,转换方法如下:

      openssl x509 -in your certificate.crt -out your certificate.cer -outform der

    转换成功后需要找到你转换成.cer的文件.添加到你的xcode工程当中去;

    我用的是AFN2.x 需要添加AFSecuriPolicy和setAFHTTPRequestOperationManager, 如下

    - (AFSecurityPolicy*)SecurityPolicy

    {

        NSString *cerPath = [[NSBundlemainBundlepathForResource:@"your certificate"ofType:@"cer"];

        NSData *certData = [NSDatadataWithContentsOfFile:cerPath];

        AFSecurityPolicy *securityPolicy = [[AFSecurityPolicyallocinit];

        [securityPolicy setAllowInvalidCertificates:YES];

        [securityPolicy setPinnedCertificates:@[certData]];

        [securityPolicy setSSLPinningMode:AFSSLPinningModePublicKey];

        return securityPolicy;

    }    

    管理器设置

       AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanager];

        [manager setSecurityPolicy:[selfSecurityPolicy]]; 

       manager.responseSerializer = [AFHTTPResponseSerializerserializer];

        [manager GET:@"your Url" parameters:nilsuccess:^(AFHTTPRequestOperation *operation,id responseObject) {

            NSLog(@"成功了");

        } failure:^(AFHTTPRequestOperation *operation,NSError *error) {

            NSLog(@"Error: %@", error);

        }];

        

    }

     这样就可以了,你run一下 会打印出来的信息如下:

    这说明请求还是失败的,那具体改如何解决呢? 需要你将下面的代码添加上就OK了!

    securityPolicy.allowInvalidCertificates =NO;

        securityPolicy.validatesDomainName =YES;

        securityPolicy.validatesCertificateChain =NO;

     

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

     

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

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

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

    置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立

    validatesCertificateChain 是否验证整个证书链,默认为YES, 设置为YES,会将服务器返回的Trust Object上的证书链与本地导入的证书进行对比,达到验证的效果,(对于这具体不明白的可以百度)!

     

    好了 现在你run一下就没问题了, 一切就OK 了!

    如有说的不对的地方请指出(见谅)!



    一天一章
  • 相关阅读:
    我爱java系列之---【微服务间的认证—Feign拦截器】
    我爱java系列之---【设置权限的三种解决方案】
    581. Shortest Unsorted Continuous Subarray
    129. Sum Root to Leaf Numbers
    513. Find Bottom Left Tree Value
    515. Find Largest Value in Each Tree Row
    155. Min Stack max stack Maxpop O(1) 操作
    painting house
    Minimum Adjustment Cost
    k Sum
  • 原文地址:https://www.cnblogs.com/hangman/p/6876805.html
Copyright © 2011-2022 走看看