https/tcp ssh/tls

weixin_34393428發表於2017-10-11

針對非自建證書 AFN中調整https的處理方法


// https 處理
+ (AFSecurityPolicy*)customSecurityPolicy {
    // 證書
    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"server" ofType:@"cer"];//證書的路徑
    NSData *certData = [NSData dataWithContentsOfFile:cerPath];
    // AFSSLPinningModeCertificate 使用證書驗證模式
    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
    
    // 如果是需要驗證自建證書,需要設定為YES
    securityPolicy.allowInvalidCertificates = NO;
    
    //validatesDomainName 是否需要驗證域名,預設為YES;
    //如置為NO,建議自己新增對應域名的校驗邏輯。
    securityPolicy.validatesDomainName = NO;
    securityPolicy.pinnedCertificates = [NSSet setWithObjects:certData, nil];
    return securityPolicy;
}

GCDAsyncSocket中 TLS調整

正對自建證書使用以下方案

stackoverflow回答

非自建證書

用以下替換


- (void)socket:(GCDAsyncSocket *)sock didReceiveTrust:(SecTrustRef)trust completionHandler:(void (^)(BOOL shouldTrustPeer))completionHandler {
    completionHandler(YES);
    return;
}

相關文章