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 服务器信任策略对我不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥来自其他用户的 Digest 身份验证 Java HttpClient 代码对我不起作用? [复制]

MS Windows 套接字示例对我不起作用 [关闭]

为啥命名:false 对我不起作用

为啥 Class.forName() 对我不起作用?

为啥 '@drop' 事件在 vue 中对我不起作用?

为啥交换功能对我不起作用? [复制]