我正在尝试将SSL固定在我的应用中。在所有指南之后,我得到了:

AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
policy.allowInvalidCertificates = YES;
NSData *localCertificate = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"my" ofType:@"cer"]];
policy.pinnedCertificates = [[NSSet alloc] initWithObjects:localCertificate, nil];
self.securityPolicy = policy;


“自我”是AFHTTPSessionManager的子类。

我在两台服务器上对此进行了测试。
第一台服务器具有my.cer,当我发出请求时,将调用URLSession:didReceiveChallenge:completionHandler的方法AFURLSessionManager。然后证书进行比较,一切正常。

第二台服务器没有my.cer。当我发出请求时,不会调用URLSession:didReceiveChallenge:completionHandler中的AFURLSessionManager,并且不会进行证书检查,但是我可以发出请求并获得响应。

如果我没有收到来自服务器的证书,是否可以取消请求?

谢谢!

最佳答案

在搜索至少一些信息的过程中,我遇到了一个讨论,发现我的info.plist中的NSAllowsArbitraryLoads位是引起该错误的原因。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>


删除这个对我有帮助。
希望这会对其他人有所帮助。

关于ios - AFNetworking SSL固定无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44202068/

10-13 05:37