注:如果不允許抓包,請校驗證書贤重,如果允許抓包茬祷,就不要校驗證書!
securityPolicy屬性請設(shè)置為:AFSSLPinningModeNone(該屬性的默認(rèn)值)
升級https其實主要是服務(wù)器來做并蝗,如果客戶端不做校驗證書的話祭犯,你的工作就是把接口地址從http 改成 https,然后坐看服務(wù)器的小伙伴忙的翻天覆地滚停。
如果需要防止被抓包或者為了驗證請求安全沃粗,請設(shè)置校驗證書。
AFN兩種管理者
1.AFURLSessionManager
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
// 設(shè)置證書模式
NSString * cerPath = [[NSBundle mainBundle] pathForResource:@"證書名字" ofType:@"cer"];
NSData * cerData = [NSData dataWithContentsOfFile:cerPath];
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:[[NSSet alloc] initWithObjects:cerData, nil]];
// 客戶端是否信任非法證書
manager.securityPolicy.allowInvalidCertificates = YES;
// 是否在證書域字段中驗證域名
[manager.securityPolicy setValidatesDomainName:NO];
2.AFHTTPSessionManager(代碼與上面的其實是相同的键畴,只不過是管理者的創(chuàng)建方法的區(qū)別)
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// 2.設(shè)置證書模式
NSString * cerPath = [[NSBundle mainBundle] pathForResource:@"證書名字" ofType:@"cer"];
NSData * cerData = [NSData dataWithContentsOfFile:cerPath]; manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:[[NSSet alloc] initWithObjects:cerData, nil]];
// 客戶端是否信任非法證書
manager.securityPolicy.allowInvalidCertificates = YES;
// 是否在證書域字段中驗證域名
[manager.securityPolicy setValidatesDomainName:NO];