ssl之本地生成证书

该博客围绕iOS移动开发展开,项目主域名用CA证书,次域名用自建证书。介绍了本地证书保存方式,一是直接内置,二是通过接口返回字符串写入本地。直接内置有过期问题,若要校验过期,可在证书快过期时让后台接口返回新证书信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 前言:

开发环境:ios

项目需求:主域名使用CA证书,官方颁发的,一年一签。次域名使用自建证书

本地证书保存的方式:1.直接内置cer等格式的证书文件 2.通过主域名下的接口返回证书的字符串,然后本地写入cer文件,接着读取出来公钥,进行传输比对

为啥这么做呢?直接内置证书,会有过期问题,当然啦安全策略可以不校验是否过期。

但如果要校验过期呢,就可以本地写入的方式来进行,证书即将过期的时候,后台接口返回新的证书信息字符串到app

 

  //1.获取文件目录
    NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
   
    //2.拼接文件名,构造字符串文件的存储路径
    NSString *cerPath = [documentPath stringByAppendingPathComponent:@"text.cer"];
    
    //3.读取后台返回的公钥文件字符串,例如下面的
    NSString *foo_str = @"MIIDgDCCAmigasdfasdfPos7A7aSi/Zql";
    
    //通过将writeToFile:atomically:encoding:error:方法发送给字符串对象完成字符串存储到文件内的功能
    
    [foo_str writeToFile:cerPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
 
    //4.读取字符串
    NSString *resultStr = [NSString stringWithContentsOfFile:cerPath encoding:NSUTF8StringEncoding error:nil];
    
    //5.替换空格,和开头和结尾无用的字符串
    resultStr = [resultStr stringByReplacingOccurrencesOfString:@"-----BEGIN CERTIFICATE-----" withString:@""];
    resultStr = [resultStr stringByReplacingOccurrencesOfString:@"-----END CERTIFICATE-----" withString:@""];
    resultStr = [resultStr stringByReplacingOccurrencesOfString:@"\n" withString:@""];
    DLog(@"resultStr is %@", resultStr);
    
  
    //6.base64解码,如果公钥文件里面是字母数字混合的
    NSData *certData = [[NSData alloc] initWithBase64EncodedString:resultStr options:0];
    // NSData * certData =[NSData dataWithContentsOfFile:cerPath];//非base64编码的,直接从文件读取数据,转为字节
    [securityPolicy setPinnedCertificates:[NSSet setWithArray:@[certData]]];
    
    [APIClient sharedClient].securityPolicy = securityPolicy;

 

转载于:https://www.cnblogs.com/appleJun/p/11052943.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值