【1】AFSSLPinningMode
typedef NS_ENUM(NSUInteger, AFSSLPinningMode) { // 代表客户端无条件地信任服务器端返回的证书 AFSSLPinningModeNone, // 代表客户端会将服务器端返回的证书与本地保存的证书中,PublicKey的部分进行校验;如果正确,才继续进行 AFSSLPinningModePublicKey, // 代表客户端会将服务器端返回的证书和本地保存的证书中的所有内容,包括PublicKey和证书部分,全部进行校验;如果正确,才继续进行 AFSSLPinningModeCertificate, };
使用:
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] init]; AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone]; policy.validatesDomainName = YES; manager.securityPolicy = policy;
【2】validatesDomainName
validatesDomainName 是指是否校验在证书中的domain这一个字段。每个证书都会包含一个DomainName, 它可以是一个IP地址,一个域名或者一端带有通配符的域名。如*.baidu.com, www.baidu.com 都可以成为这个证书的DomainName。设置validatesDomainName=YES将严格地保证其安全性