如何理解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)

相关推荐

  • mysql5.7无法开启二进制日志的示例分析

    技术mysql5.7无法开启二进制日志的示例分析小编给大家分享一下mysql5.7无法开启二进制日志的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起

    攻略 2021年11月6日
  • 如何使用phoenix操作hbase数据)

    技术如何使用phoenix操作hbase数据)这篇文章将为大家详细讲解有关如何使用phoenix操作hbase数据),小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.下载安装phoen

    攻略 2021年12月9日
  • VB6实现MUI程序方法是怎么样的

    技术VB6实现MUI程序方法是怎么样的这期内容当中小编将会给大家带来有关VB6实现MUI程序方法是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。为大家详细讲述的是VB6实现MU

    攻略 2021年10月28日
  • 怎么使用python logging

    技术怎么使用python logging本篇内容介绍了“怎么使用python logging”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅

    攻略 2021年11月18日
  • 互联网中好用简洁的项目管理软件有哪些

    技术互联网中好用简洁的项目管理软件有哪些这篇文章主要介绍互联网中好用简洁的项目管理软件有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!TeamLabTeamLab 是一个免费开源的商业协作和项

    攻略 2021年11月2日
  • 怎么使用Python语言

    技术怎么使用Python语言本篇内容介绍了“怎么使用Python语言”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、先

    2021年11月2日