AlamoFire:公钥固定不起作用

Posted

技术标签:

【中文标题】AlamoFire:公钥固定不起作用【英文标题】:AlamoFire: public key pinning not working 【发布时间】:2017-01-10 00:12:15 【问题描述】:

我正在使用共享实例创建会话管理器,如下所示:

class Session 
static let sharedInstance = Session()

private var manager : SessionManager?

func ApiManager()->SessionManager
    if let m = self.manager
        return m
    else

        let serverTrustPolicies: [String: ServerTrustPolicy] = [
            "https:api-cat.example.com": .pinPublicKeys(
                publicKeys:savePublicKeys(),
                validateCertificateChain:true,
                validateHost:true
            )]
        self.manager = SessionManager(
            serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies))
        return self.manager!
    

savePublicKeys 返回[SecKey]

即使在使用空公钥数组设置新的 ServerTrustPolicy 后,我仍然能够成功调用并获取数据。 如果我在这里犯了任何错误,有什么想法吗?

【问题讨论】:

【参考方案1】:

您的"https:api-cat.payeezy.com" 看起来很可疑。

删除https: 部分或添加缺少的双斜杠https://ServerTrustPolicyManager 仅在其主机属性与请求的主机匹配时应用该策略,如果不匹配,则使用 Apple 的标准行为(参见 Alamofire Documentation)。

【讨论】:

这解决了我的问题。感谢 ChaosCoder。只是想添加这个,问题出在'https:'之后缺少'//'。您可以更改您的答案以反映相同的情况。

以上是关于AlamoFire:公钥固定不起作用的主要内容,如果未能解决你的问题,请参考以下文章

通过 Alamofire 进行 SSL 固定不起作用

Alamofire 超时不起作用

导入 Alamofire.swift 不起作用

alamofire 上传图像数组不起作用

Alamofire EmptyResponseCodes 不起作用

Alamofire 服务器信任策略对我不起作用