iOS HTTPS安全请求 验证服务器返回的证书
- (void)viewDidLoad {
[super viewDidLoad];
[self httpsSession];
}
- (void)httpsSession {
// 创建session
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc] init]];
// session发起任务
NSURLSessionDataTask *dataTask = [session dataTaskWithURL:[NSURL URLWithString:@"https://www.microsoft.com/zh-cn/software-download/windows10ISO"] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
}];
// task开启任务
[dataTask resume];
}
#pragma mark - <NSURLSessionTaskDelegate>
// 与服务器建立安全连接,(服务端返回证书给客户端、客户端使用证书加密数据发送给服务端)
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler {
// challenge:质问(保护空间、认证方法==ServerTrust)
// NSURLSessionAuthChallengeDisposition:如何处理这个安全证书
// NSURLCredential:安全证书
if (challenge.protectionSpace.authenticationMethod != NSURLAuthenticationMethodServerTrust) {
return;
}
// 根据服务端的的信任信息,创建证书
NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
NSLog(@"-------completionHandler");
}
本文介绍了一个 iOS 应用中实现 HTTPS 安全请求的方法,并详细展示了如何通过 NSURLSession 对服务器返回的证书进行验证的过程。
1050

被折叠的 条评论
为什么被折叠?



