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通信

你可能感兴趣的:(AFNetworking 支持HTTPS)