iOS/OC:ATS、https、自签证书、域名

  关于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了, 有不明白的可以底下留言,我知道的话在给你解答。

你可能感兴趣的:(iOS/OC:ATS、https、自签证书、域名)