2016-08-23 41 views
0

我想重寫我的服務器上的安全性,因爲我們正在測試將來的某些內容。我創建了一個全球Alamofire管理器並設置了服務器信任策略,但它不起作用。我將我的域名更改爲無效,但我仔細檢查以確保它是相同的。Alamofire服務器信任策略不適用於我

class HTTPManager: Alamofire.Manager { 
    static let sharedManager: HTTPManager = { 

     let serverTrustPolicies: [String: ServerTrustPolicy] = [ 
      "qa.blah.me": .DisableEvaluation 
     ] 
     let serverTrustPolicyManger = ServerTrustPolicyManager(policies: serverTrustPolicies) 

     let configuration = Timberjack.defaultSessionConfiguration() 

     let manager = HTTPManager(configuration: configuration, serverTrustPolicyManager: serverTrustPolicyManger) 

     return manager 
    }() 
} 

這就是我的使用方法。

HTTPManager.sharedManager.request(request).responseJSON(completionHandler: completionHandler) 

這是錯誤消息我得到:

Error: The certificate for this server is invalid. You might be connecting to a server that is pretending to be 「qa.blah.me」 which could put your confidential information at risk. 
Suggestion: Would you like to connect to the server anyway? 

什麼我做錯了,我該如何解決?

謝謝!

PS:Alamofire 3.0

回答

0

嘗試實例經理爲Alamofire.manager代替HTTPManager

0

你最有可能被擊中ATS所以ServerTrustPolicy可能甚至沒有得到調用。我建議您閱讀Alamofire自述文件的整個Security部分,以確保正確配置了所有東西。

快速判斷您是否正在調用ServerTrustPolicy的方法是在serverTrustPolicyForHost()方法中刪除斷點並查看它是否被調用。

沒有理由不削減有效的證書。您可以在Let's Encrypt創建免費證書。