2013-08-30 32 views
0

我正在开发一些iOS应用程序,我正在下载/上传非常敏感的数据。 我正在使用AFNetworking来做这些请求,而且我的问题很简单: 我只能在所有应用程序中使用3个不同的证书,我可以定制AFNetworking的图层只接受这3个证书吗?自定义信任商店与AFNetworking

该操作的目的是为了避免“人到中间”攻击,因此避免在HTTP交换期间注入和/或检索任何其他信息。

+0

一般来说,我们希望Stack Overflow的问题是基于实际的实际问题。到目前为止你尝试了什么,为什么它没有奏效? –

+1

谢谢你的回复,是的,我知道一般SO是基于问题的论坛。我没有尝试过,因为iOS上这个非常知名的库没有论坛/帮助部分,正是基于challenge/ssl/certificate问题。而且我知道我的问题非常确切(对每个人都没有用),所以我更喜欢在SO – JulienG

回答

0

所有AFNetworking操作都继承自AFURLConnectionOperation,它定义了一个名为authenticationChallenge的块。在您的操作中设置此块将定义AFNetworking如何响应NSURLConnectionDelegate方法connection:didReceiveAuthenticationChallenge:。具体来说,你会想检查challenge.proposedCredential

如果您不想在每个操作上设置此块,也可以继承您正在使用的操作类型(例如AFJSONRequestOperation),并使用所需行为覆盖connection: willSendRequestForAuthenticationChallenge:

+0

上发帖谢谢!这正是我正在寻找的。 – JulienG

+0

@JulienG有一个简单的方法来做到这一点与AFNetworking本身,而不是下降和重写NSURLConnection方法。看到我的[在这里回答](http://stackoverflow.com/questions/16605898/how-to-compare-ssl-certificates-using-afnetworking/16606296#16606296)。基本上,您将证书添加到您的应用程序包并在您的AFHttpClient上设置defaultSSLPinningMode。如果它回答您的问题,我可以将其扩展为答案。 –

+0

你应该使用@ DavidCaunt的建议。我错误地认为SSLPinning将限制限制为1个证书。 –