這是AFNetWorking使用自簽證書時出現的問題。
allowInvalidCertificates這個屬性為YES的話是驗證自建證書,但是像我們公司有錢,花錢整得https的話就NO嘍。
/**這個方法真的很好,減少了網絡創建的TCP的三次握手,直接復用TCP的鏈接
* 所有的HTTP請求共享一個AFHTTPSessionManager,原理參考地址:http://www.lxweimin.com/p/5969bbb4af9f
* + (void)initialize該初始化方法在當用到此類時候只調用一次
*/
+ (void)initialize
{
_manager = [AFHTTPSessionManager manager];
AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
//如果是需要驗證自建證書,需要設置為YES
[securityPolicy setAllowInvalidCertificates:NO];
[_manager setSecurityPolicy:securityPolicy];
HTTPS步驟:
1.從服務器要來 .crt格式的證書,然后用Mac鑰匙串打開,然后導出 .cer格式的證書
2.把 .cer證書導入程序的 NSBundle中。
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"cer"];
NSData *cerData = [NSData dataWithContentsOfFile:cerPath];
NSSet *cerSet = [[NSSet alloc]initWithObjects:cerData, nil];
AFSecurityPolicy *securityPoliy = [AFSecurityPolicy defaultPolicy];
//allowInvalidCertificates 是否允許無效證書(也就是自建的證書),默認為NO
//如果是需要驗證自建證書,需要設置為YES
securityPoliy.allowInvalidCertificates = YES;
securityPoliy.validatesDomainName = NO;
//設置證書
[securityPoliy setPinnedCertificates:cerSet];
[dxClient setSecurityPolicy:securityPoliy];