我的应用使用TLS连接到服务器,并从服务器接收令牌。它需要通过检查服务器公钥的签名来验证令牌的真实性,该公钥是从SecTrustRef
-connection:willSendRequestForAuthenticationChallenge:
中获取的- (void)connection:(NSURLConnection *)connection
willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
if /* server trust authentication method and server is trusted */ {
SecTrustRef trust = [challenge.protectionSpace serverTrust];
self.serverPublicKey = SecTrustCopyPublicKey(trust);
}
}
对象中检索的,如此
-connection:willSendRequestForAuthenticationChallenge:
但是,如果我断开与服务器的连接,然后再次连接到它,我的委托的-connectionDidFinishLoading:
方法没有被调用,我没有机会存储服务器的公钥。系统似乎正在缓存服务器的凭据以及我发送给服务器的客户端凭据。
有没有办法检索这些缓存的凭据,以便我可以在NSURLConnection
中获取服务器的公钥,或者只给我{{1}}的其他委托回调?