AlamoFire:公钥固定不起作用

时间:2017-01-10 00:12:16

标签: ios swift swift3 alamofire pinning

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

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 个答案:

答案 0 :(得分:1)

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

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