Alamofire 服务器信任策略对我不起作用
Posted
技术标签:
【中文标题】Alamofire 服务器信任策略对我不起作用【英文标题】:Alamofire server trust policy does not work for me 【发布时间】:2016-08-23 18:09:16 【问题描述】:我想覆盖我的服务器上的安全性,因为我们将来会测试一些东西。我创建了一个全局 Alamofire 管理器并设置了服务器信任策略,但它不起作用。我将域更改为 blah,但我仔细检查以确保它是相同的。
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
【问题讨论】:
【参考方案1】:尝试将管理器实例化为 Alamofire.manager 而不是 HTTPManager
【讨论】:
【参考方案2】:你很可能被ATS 击中,所以ServerTrustPolicy
可能甚至没有被调用。我建议通读 Alamofire README 的整个 Security 部分,以确保您已正确配置。
判断您是否正在调用 ServerTrustPolicy
的一种快速方法是在 serverTrustPolicyForHost()
方法中放置一个断点并查看它是否被调用。
也没有理由不削减有效证书。您可以在Let's Encrypt 创建免费证书。
【讨论】:
以上是关于Alamofire 服务器信任策略对我不起作用的主要内容,如果未能解决你的问题,请参考以下文章