【问题标题】:AlamoFire: public key pinning not workingAlamoFire:公钥固定不起作用
【发布时间】: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 后,我仍然能够成功调用并获取数据。 如果我在这里犯了任何错误,有什么想法吗?

【问题讨论】:

    标签: ios swift swift3 alamofire pinning


    【解决方案1】:

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

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

    【讨论】:

    • 这解决了我的问题。感谢 ChaosCoder。只是想添加这个,问题出在'https:'之后缺少'//'。您可以更改您的答案以反映相同的情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 2019-10-03
    相关资源
    最近更新 更多