在WWDC 2016上,蘋果向開發者傳遞一個消息,到2017年1月1日時App Store中所有應用必須啟用App Transport Security應用程序安全傳輸協議,也是就https。不過在2016年年底又宣布延期,延期到什么時候不清楚。
公司后臺給我證書文件有服務器的server.cer、客戶端client.p12、client.cer以及證書密碼。一開始我就當著單向驗證來的,結果一直失敗,崩潰。后面后臺給我一篇博客見 雙向驗證
1.單向驗證(只需用到server.cer)
2 雙向驗證(只需用到client.p12、client.cer、需要用到證書密碼)
3.? 遇到的問題(其實都不是問題,小白可以借鑒下)
?單向驗證
除了設置plist App Transport Security Settings之外,還需要設置證書模式,見下面代碼
```
@property(nonatomic, strong) AFHTTPSessionManager *manager;
@property(nonatomic, copy) NSString *url;
@property(nonatomic, strong) NSURLSessionDataTask *dataTask;
- (void)viewDidLoad {
[super viewDidLoad];
self.manager = [AFHTTPSessionManager manager];
self.manager.responseSerializer = [AFHTTPResponseSerializer serializer];
self.manager.requestSerializer = [AFHTTPRequestSerializer serializer];
}
- (IBAction)postAfn:(id)sender {
self.url = @"https://api.egdtv.com:444/actualSnatch/Video.json";// @"https://api.egdtv.com:444/actualSnatch/QQ.js";
__weak __typeof(self)weakSelf = self;
[self.dataTask cancel];
self.dataTask = [self.manager GET:self.url parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id? _Nullable responseObject) {
weakSelf.getResult.text = @"get成功";
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
weakSelf.getResult.text = [error.userInfo objectForKey:@"NSLocalizedDescription"];
}];
}
+(AFSecurityPolicy *)customSecurityPolicy{
// 設置證書模式
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"server" ofType:@"cer"];
NSData *cerDat = [NSData dataWithContentsOfFile:cerPath];
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
//允許自檢證書
securityPolicy.allowInvalidCertificates = YES;
//域名與服務器一致
securityPolicy.validatesDomainName = YES;
securityPolicy.pinnedCertificates = [[NSSet alloc] initWithObjects:cerDat, nil];
return securityPolicy;
}
?雙向驗證
感謝博主:http://www.jb51.net/article/100586.htm?
可以先睹博主的AFN3.0及以上:http://xiazai.jb51.net/201612/yuanma/New_AFNetworking_For_HTTPS-master_jb51.zip?
?遇到的問題
1. afnetworking 9825
2.? The server “ xxx” did not accept the certificate
3.? afn? cancelled??
4.? unacceptable content-type: application/javascript? 剛開始調試的時候后臺返回的js,沒有設置AFN接收格式