您如何使用 Alamofire 测试证书固定?

Posted

技术标签:

【中文标题】您如何使用 Alamofire 测试证书固定?【英文标题】:How do you test certificate pinning with Alamofire? 【发布时间】:2015-08-04 13:41:40 【问题描述】:

所以我按照 Alamofire 在自述文件中关于他们新的服务器信任策略的说明进行操作。从服务器获取证书,将其添加到我的项目中,并在我的项目中实现以下代码:

let serverTrustPolicies: [String: ServerTrustPolicy] = [
        "someserver.withvalidcer.com": .PinCertificates(
            certificates: ServerTrustPolicy.certificatesInBundle(),
            validateCertificateChain: true,
            validateHost: true
        )
    ]

    let manager = Manager(
        configuration: NSURLSessionConfiguration.defaultSessionConfiguration(),
        serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
    )

我的问题是如何测试这个?

我尝试将我的基本 api url 更改为我们的测试服务器,该服务器具有不同的有效证书,但 api 调用没有被拒绝。 而且我已经验证了代码在所需的 api 调用上运行。

【问题讨论】:

ios 中证书固定的新手。我需要你的帮助。我们需要来自服务器端的任何证书吗?您能否分享任何显示如何将 trustPolice 附加到请求的示例代码?谢谢 【参考方案1】:

好问题!

我建议尝试使用一些代理软件来尝试介入 API 调用(Charles Proxy、Burp 等)。启用固定后,所有网络请求都应该失败,因为代理软件将为您提供不正确的证书。然后,如果您禁用证书固定,服务调用应该通过代理正常工作。

另一种方法是临时更改服务器上的证书,您应该会看到 Web 服务也失败了。

【讨论】:

是 iOS 中证书固定的新手。我需要你的帮助。我们需要来自服务器端的任何证书吗?您能否分享任何显示如何将 trustPolice 附加到请求的示例代码?谢谢

以上是关于您如何使用 Alamofire 测试证书固定?的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire 中的证书固定不起作用

如何使用 Alamofire 关闭证书验证?

如何在 Alamofire 中实现自签名证书?

如何使用 Alamofire 访问具有无效证书的本地 Https?

Alamofire 测试包括自签名证书?

如何在 iOS 上固定证书的公钥