如何理解AFNetWorking https双向认证

技术如何理解AFNetWorking https双向认证这篇文章给大家介绍如何理解AFNetWorking https双向认证,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。客户端验证服务端证书:需要

这篇文章给大家介绍如何理解AFNetWorking https双向认证,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

客户端验证服务端证书:

需要超文本传送协议(超文本传输协议的缩写)配置路径需要域名

1:先项目中倒入服务端证书sever.cer,

2.然后设置安全政策

自我。manager=[AFHTTPRequestOperationManager manager];

自我。经理。response serializer=[[afhttpresponse serializer alloc]init];

[自我。经理。http ader field : @“header-platform ”]的请求序列化程序set value : @“iphone ”;

自我。经理。安全策略=[具有锁定模式: afsslpinningmodepublikey的afsecurity policy策略];

自我。经理。安全政策。允许有效证书=是;

自我。经理。安全政策。validateddomain域名=否;

自我。经理。安全政策。验证证书链=否;

客户端会变了项目中的证书和服务端的证书匹配

服务端验证客户端证书,首先把服务端的证书client.p12导入到服务端的密钥库里

然后在AFURLConnectionOperation.m中加入以下方法

-(OSStatus)extracentity :(CFDataRef)in p12 data :(SecIdentityRef *)identity {

OSStatus安全错误=errSecSuccess

CFStringRef密码=CFSTR('你的证书密码');

const void * keys[]={ ksecimportexportpassage };

const void * values[]={ password };

cf dictionary ref options=cf dictionary create(NULL,键,值,1,空,空);

CFArrayRef items=CFArrayCreate(NULL,0,0,NULL);

安全错误=secpkcs12导入(在p12数据、选项、项目中);

if (securityError==0)

{

cf dictionary ref ident=CFArrayGetValueAtIndex(items,0);

const void *tempIdentity=空;

tempIdentity=cf dictionary get value(ident,ksecimportititemidentity);

* identity=(SecIdentityRef)tempIdentity;

}

    if (options) {

        CFRelease(options);

    }

    return securityError;

}

把AFURLConnectionOperation.m中的

- (void)connection:(NSURLConnection *)connection

willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge

替换成

- (void)connection:(NSURLConnection *)connection

willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge

{

                        NSString *thePath = [[NSBundle mainBundle] pathForResource:@"client" ofType:@"p12"];

                        NSLog(@"thePath===========%@",thePath);

                        NSData *PKCS12Data = [[NSData alloc] initWithContentsOfFile:thePath];

                        CFDataRef inPKCS12Data = (__bridge CFDataRef)PKCS12Data;

                        SecIdentityRef identity = NULL;

                        // extract the ideneity from the certificate

                        [self extractIdentity :inPKCS12Data :&identity];

                        SecCertificateRef certificate = NULL;

                        SecIdentityCopyCertificate (identity, &certificate);

                        const void *certs[] = {certificate};

//                        CFArrayRef certArray = CFArrayCreate(kCFAllocatorDefault, certs, 1, NULL);

                        // create a credential from the certificate and ideneity, then reply to the challenge with the credential

                        //NSLog(@"identity=========%@",identity);

                        NSURLCredential *credential = [NSURLCredential credentialWithIdentity:identity certificates:nil persistence:NSURLCredentialPersistencePermanent];

//           credential = [NSURLCredential credentialWithIdentity:identity certificates:(__bridge NSArray*)certArray persistence:NSURLCredentialPersistencePermanent];

            [challenge.sender useCredential:credential forAuthenticationChallenge:challenge];

}

然后就可以进行双向认证了

关于如何理解AFNetWorking https双向认证就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/117729.html

(0)

相关推荐

  • jquery trim方法能去除哪些符号

    技术jquery trim方法能去除哪些符号这篇文章主要介绍“jquery trim方法能去除哪些符号”,在日常操作中,相信很多人在jquery trim方法能去除哪些符号问题上存在疑惑,小编查阅了各式资料,整理出简单好

    攻略 2021年11月15日
  • 电动车好学吗,大提琴好学还是中提琴好学

    技术电动车好学吗,大提琴好学还是中提琴好学我是学小提琴的电动车好学吗,我只想告诉楼主大提琴你上了高中开始学都来的及,中提琴难度和小提琴差不多,必须从小开始练琴,我们好多现在学中提琴的同学都是从小提琴转过来的,练大提琴的同

    生活 2021年10月22日
  • C++ 调试问题:对象包含与成员函数不兼容的类型限定符

    技术C++ 调试问题:对象包含与成员函数不兼容的类型限定符 C++ 调试问题:对象包含与成员函数不兼容的类型限定符今天调试C++自定义String代码的时候,碰到一个问题,编译期报错:对象包含与成员函数

    礼包 2021年11月13日
  • Python解释器种类以及特点是什么

    技术Python解释器种类以及特点是什么这篇文章将为大家详细讲解有关Python解释器种类以及特点是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python解释器是

    攻略 2021年12月4日
  • 抖音刷粉网址,人工刷粉丝会被封号吗?

    技术抖音刷粉网址,人工刷粉丝会被封号吗?抖音是当下非常受欢迎的一个社交软件,这样一个宣传度广的社交平台自然会吸引很多商家入驻广告,也就会衍生出很多的带货网红。成长一个做宣传推广的带货网红,前提是要有人气要有粉丝关注才能有

    测评 2021年11月11日
  • Java 线程池中的线程复用是如何实现的

    技术Java 线程池中的线程复用是如何实现的Java 线程池中的线程复用是如何实现的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前几天,技术群里有个群

    2021年11月15日