1、xcode7之后对网络传输做了一些要求,传输要使用https。那么如何解决呢?
首先服务器要申请CA证书,当然即使申请了也必须是TLS1.2之后的TLS:HTTP是http+SSL的意思,现在不是用SSL,改用TLS了。
服务器根据CA证书,可以设置私钥,根据私钥可以生成公钥。当app向服务器发送请求的时候,先请求服务器的公钥。
客户端用公钥给对称加密中用到的密钥进行加密之后返回给服务器。服务器用私钥解密之后可以得到密钥。然后服务器用密钥给客户端请求的数据加密之后返回 给客户端。
然后客户端和服务器就可以使用密钥给数据加密之后进行网络传输了。其实这里RSA的主要作用是给对称加密中的密钥加密。
在项目 中如何使用ATS:
#pragma mark - NSURLSessionTaskDelegate
//接受服务器的挑战,信任服务器
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler {
if (challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust) {
NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
completionHandler(0,credential);
}
}