如何解决iOS 13 NSURLSession websocket不使用TLS 1.3
我试图在基于NSURLSession webSocketTaskWithRequest:
的websocket连接上使用TLS 1.3。奇怪的是,它不要求服务器提供TLS 1.3。但是,当我对HTTPS请求使用几乎相同的代码时,它的请求使用TLS 1.3。知道如何针对Websocket正确使用TLS 1.3吗?
//HTTPS
NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfig.TLSMaximumSupportedProtocol = kTLSProtocolMaxSupported;
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig
delegate:self
delegateQueue:[NSOperationQueue mainQueue]];
[request setURL:url];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data,NSURLResponse * _Nullable response) {
...
}];
//WebSocket
NSURLSessionConfiguration *config = [NSURLSessionConfiguration ephemeralSessionConfiguration];
config.TLSMaximumSupportedProtocol = kTLSProtocolMaxSupported;
NSURLSession *session = [NSURLSession sessionWithConfiguration:config
delegate:self
delegateQueue:[NSOperationQueue mainQueue]];
self.task = [session webSocketTaskWithRequest:request];
[self listen];
[self.task resume];
解决方法
显然,Xcode 11.3.1将使用TLS 1.2而非TLS 1.3。我不确定为什么会发生这种情况..但是使用Xcode 11.5解决了我的问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。