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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容