iOS https自制證書單向&雙向驗證

在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接收格式


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容