willSendRequestForAuthenticationChallenge未调用

时间:2013-03-26 18:54:23

标签: iphone ios objective-c

我正在尝试在iOS应用程序中验证服务器证书。

我遇到问题的委托方法是:

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge

当我使用" https://twitter.com"等服务器时,会调用此方法。

但是,当我将它指向我的生产服务器(政府CA)时,这种方法根本就不会被调用。

我认为,这个证书可以被认为是一个自签名证书,因为如果你没有安装gov证书,你会得到"这个连接是不可信的"消息在浏览器中。

有没有办法强制调用willSendRequestForAuthenticationChallenge并检查自签名证书?

谢谢!

1 个答案:

答案 0 :(得分:7)

前一段时间问过这个问题,但我想我会给将来的人一个答案。

据我所知,身份验证挑战每10分钟每个主机只调用一次。挑战的结果是缓存性能。缓存将在10分钟后到期。 (http://en.wikipedia.org/wiki/Transport_Layer_Security#Resumed_TLS_handshake

jblack 在此提供了很好的见解,他提到了Apple论坛:How to cancel a persistent connection using NSURLConnection?

当我遇到类似的问题和问题时,让我感到惊讶的是,我在应用程序中使用了相同的主机进行多项操作,因此在我的NSURLConnection被解雇之前,其他地方已经接受了挑战但尚未过期,因此我从未接受过挑战(没有必要)。

尝试将主机隔离到这一个请求,然后你应该得到回调。

希望它有所帮助。