关于iOS 自制证书进行https协议请求,分享下我遇到的坑。
先上AFN代码:
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@“你的证书名称” ofType:@"cer"];
NSData *cerData = [NSData dataWithContentsOfFile:cerPath];
NSSet *cerSet = [NSSet setWithObjects:cerData, nil];
AFSecurityPolicy *security = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
[security setAllowInvalidCertificates:YES];
security.validatesDomainName = NO;
[security setPinnedCertificates:cerSet];
“AFHTTPSessionManager实例”.securityPolicy = security;
上面这个代码是对AFN实例的证书设置 , 其中:
[security setAllowInvalidCertificates:YES];
上面这行代码意义:允许不受信证书(自签证书)进行网络请求
security.validatesDomainName = NO;
上面这行代码意义:不去验证网址链接的域名是否是正确,(如果你的接口是域名而且还是自制证书不设置为NO默认就是YES 则会造成网络请求失败,AFN将取消请求造成ERROR)
自此,https 请求的证书配置完毕,是否能通过就要依赖你的证书是否是可用有效的自制证书
证书要求需要和你的后端同事确认
1 苹果ATS要求:
1️⃣TSL1.2 (以上都行)
2️⃣SHA-256 (以上)加密
3️⃣forward security (有人翻译为前向加密技术)
4️⃣证书位数 2048 位以上
证书符合这些要求的话,
设置成YES这样就OK了, 有不明白的可以底下留言,我知道的话在给你解答。
网友评论