針對(duì)非自建證書(shū) AFN中調(diào)整https的處理方法
// https 處理
+ (AFSecurityPolicy*)customSecurityPolicy {
// 證書(shū)
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"server" ofType:@"cer"];//證書(shū)的路徑
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
// AFSSLPinningModeCertificate 使用證書(shū)驗(yàn)證模式
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
// 如果是需要驗(yàn)證自建證書(shū),需要設(shè)置為YES
securityPolicy.allowInvalidCertificates = NO;
//validatesDomainName 是否需要驗(yàn)證域名,默認(rèn)為YES;
//如置為NO,建議自己添加對(duì)應(yīng)域名的校驗(yàn)邏輯。
securityPolicy.validatesDomainName = NO;
securityPolicy.pinnedCertificates = [NSSet setWithObjects:certData, nil];
return securityPolicy;
}
GCDAsyncSocket中 TLS調(diào)整
正對(duì)自建證書(shū)使用以下方案
非自建證書(shū)
用以下替換
- (void)socket:(GCDAsyncSocket *)sock didReceiveTrust:(SecTrustRef)trust completionHandler:(void (^)(BOOL shouldTrustPeer))completionHandler {
completionHandler(YES);
return;
}