AFNetworking 支持HTTPS

AFSecurityPolicy

使用AFNetworking 进行 https请求核心是生成 AFSecurityPolicy 对象,并赋值给当前的SessionManager。

+ (AFSecurityPolicy *)customSecurityPolicy {
 NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"pacificcoffee_com_cn" ofType:@"cer"]; 
NSData *cerData = [NSData dataWithContentsOfFile:cerPath];
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; 
securityPolicy.allowInvalidCertificates = YES; 
securityPolicy.validatesDomainName = NO; 
[securityPolicy setPinnedCertificates:@[cerData]]; 
return securityPolicy;
}

关于cer文件

一般情况下服务端的SSL证书为crt格式,而mac端使用的证书则为cer格式。这种情况可以使用 Terminal 转换一下格式即可。
在终端进入证书目录,输入一下指令

openssl x509 -in 你的证书.crt -out 你的证书.cer -outform der

然后就可以输出一个cer证书,使用的时候直接将cer证书拖入到工程中并确定cer文件已经被添加到Bundle Resource中。

allowInvalidCertificates

默认为NO,如果你的证书是不被信任的,即自建证书,那么需要设置为YES,AFNetworking才会进行证书验证

validatesDomainName

很多时候一个SSL证书下回分出两个域名,即一个生产环境和一个测试环境,这就会到时证书中的域名和实际请求的域名可能会不一致,这样就可以将validatesDomainName属性设置为NO来避免。


PS

通过这个网址可以简单判断一下你的域名是否支持HTTPS通信

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容