Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

SSL证书验证(采用AFNetwork)

$
0
0

效果:
这里写图片描述

经过app的SSL证书验证之后,就是这样子,别人无法获取报文,除非服务器的证书信任Charles的证书

前言

1、目前采用的是AFSSLPinningModePublicKey 方式验证。
2、 若想采用AFSSLPinningModeCertificate方式验证,请提供正确的cer 证书。
使用AFSSLPinningModeCertificate 方式验证的时候,获取 DER 表示的数据时
发生如下错误: Create a certificate Return NULL 。
根据“@result Return NULL if the passed-in data is not a valid DER-encoded ”,从而推测cer证书 is not a valid DER-encoded。
• 关于 DER 的概念:
1) 可参见 Wikipedia -》 https://en.wikipedia.org/wiki/X.690#DER_encoding
2)或者 如何查看证书的16进制DER编码,及证书的各个域DER格式-》 http://blog.csdn.net/taolinke/article/details/6248968

使用 AFSecurityPolicy 时,总共有三种验证服务器是否被信任的方式:

AFSSLPinningModeNone
  • 这个模式不做本地证书验证(不做 SSL Pinning 操作)
  • 直接从客户端系统中的受信任颁发机构 CA 列表中去验证
AFSSLPinningModePublicKey
  • 客户端需要一份证书文件的拷贝
  • 验证时只验证证书里的公钥,不验证证书的有效期等信息
  • 即使伪造证书的公钥,也不能解密传输的数据,必须要私钥
AFSSLPinningModeCertificate
  • 客户端需要一份证书文件的拷贝
  • 第一步验证、先验证证书的域名/有效期等信息
  • 第二步验证、对比服务端返回的证书跟客户端存储的证书是否一致

AFSSLPinningModeCertificate

   dispatch_once(&onceToken, ^{
        _manager = [AFHTTPRequestOperationManager manager];//只初始化一次
//        [_manager setSecurityPolicy:[HTTPRequestManager setupSecurityPolicy]];

    });

    btn.enabled = NO;

    //1. 设置安全策略
    [_manager setSecurityPolicy:[HTTPRequestManager setupSecurityPolicy]];
#pragma mark - ******** ssl证书检测设置

+ (AFSecurityPolicy*)setupSecurityPolicy
{
    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"cxxxxweimpliuay"ofType:@"cer"];
    NSData *certData = [NSData dataWithContentsOfFile:cerPath];
//    AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
    [securityPolicy setPinnedCertificates:@[certData]];
    securityPolicy.allowInvalidCertificates =NO;//定义了客户端是否信任非法证书
    securityPolicy.validatesDomainName =YES;//是指是否校验在证书中的domain这一个字段
    securityPolicy.validatesCertificateChain =NO;//指的是是否校验其证书链。
    return securityPolicy;
}
作者:u011018979 发表于2017/8/12 14:15:24 原文链接
阅读:25 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>