8

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

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

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

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

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

我猜这个证书可以被认为是自签名证书,因为如果您没有安装 gov 证书,您会在浏览器中收到“此连接不受信任”消息。

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

谢谢!

4

1 回答 1

7

这个问题已经被问过一段时间了,但我想我会给来的人一个答案。

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

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

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

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

希望能帮助到你。

于 2015-04-08T06:36:00.280 回答