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

时间:2021-7-4 作者:qvyue

最近项目接入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,如下设置:

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

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

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

白名单设置:

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

iOS HTTPS双向认证,app需要做什么
https白名单设置

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

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。