willSendRequestForAuthenticationChallenge未调用

tca*_*005 8 iphone objective-c ios

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

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

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
Run Code Online (Sandbox Code Playgroud)

当我使用诸如" https://twitter.com "之类的服务器时,会调用此方法.

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

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

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

谢谢!

Ale*_*lex 7

这个问题刚才被提出过,但我想我会给将来的人一个答案.

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

jblack在这里给出了很好的见解,他提到了Apple论坛:如何使用NSURLConnection取消持久连接?

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

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

希望能帮助到你.