2017-05-26 57 views
0

我試圖讓SSL釘在我的應用程序。所有導遊之後,我得到這個:AFNetworking SSL pinning無法正常工作

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,當我提出一些請求時,AFURLSessionManager的方法URLSession:didReceiveChallenge:completionHandler被調用。然後證書比較,一切都很好。

第二臺服務器沒有my.cer。當我提出請求URLSession:didReceiveChallenge:completionHandlerAFURLSessionManager沒有調用和сertificate檢查沒有發生,但我可以提出請求並得到迴應。

如果我沒有收到服務器的證書,有沒有辦法取消請求?

謝謝!

回答

0

在搜索至少一些信息的過程中,我遇到了一個討論,發現我的info.plist中的NSAllowsArbitraryLoads位導致它。

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

刪除這個幫助我。希望這會幫助其他人。