美文网首页
iOS HTTPS双向认证,app需要做什么

iOS HTTPS双向认证,app需要做什么

作者: 浅浅_e90e | 来源:发表于2020-11-11 09:44 被阅读0次

    最近项目接入https双向认证,除了需要服务器部署,app端也需要做一些设置,记录一下过程:

    1、将服务器端给的crt证书转成cer格式证书,转换方法:

    打开终端cd到crt证书所在的地址,假如crt证书的名字叫ABC,要转成cer的名字假如也叫ABC,输入下面的命令行回车就可以了:

    openssl x509 -in ABC.crt -out ABC.cer -outform der

    2、将cer证书拖拽到项目工程里

    3、拿AFNetworking设置举例,需要做如下设置:

    以下代码放在 AFHTTPSessionManager *session = [AFHTTPSessionManager   manager]; 的后面

    // /先导入证书,可导入多个证书,如需导入多个证书,则导入多个证书路径然后转成data后加入set集合中

        NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"ABC" ofType:@"cer"];

        NSData*certData = [NSData dataWithContentsOfFile:cerPath];

    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy   policyWithPinningMode:AFSSLPinningModeCertificate];

    securityPolicy.allowInvalidCertificates = YES;

    securityPolicy.validatesDomainName = NO;

    securityPolicy.pinnedCertificates= [[NSSet alloc] initWithObjects:certData,...,nil];

    session.securityPolicy = securityPolicy;

    4、info.plist的设置

    这两个选项互斥,一个设置为YES,另一个则需设置为NO,如下设置:

    allow arbitrary loads 设置为no,代表了当前应用程序只允许https的请求方式,关闭所有http的请求方式

    allow arbitrary loads in web content 是如果项目中有加载h5页面的,页面如果出现图片无法正常显示,需要设置下面的为yes

    白名单设置:

    如果程序中有部分功能需要用到http请求方式,需要单独设置白名单,开启这些白名单的项目可使用http方式请求网络,同样放在App Transport Security Settings下面,与上图两个设置并列排放

    https白名单设置

    大致需要做这些设置,个人理解有些东西可能不到位,解释的有问题的话,欢迎指正,谢谢!

    相关文章

      网友评论

          本文标题:iOS HTTPS双向认证,app需要做什么

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