Alamofire 中的证书固定不起作用

Posted

技术标签:

【中文标题】Alamofire 中的证书固定不起作用【英文标题】:Certificate pinning in Alamofire not working 【发布时间】:2016-04-13 20:46:53 【问题描述】:

我在我的项目中添加了一个 .der 证书,该证书被 ServerTrustPolicy.certificatesInBundle() 识别。我现在正在创建一个 Manager,然后用于进行 API 调用:

private class func manager() -> Alamofire.Manager 
    let certificates = ServerTrustPolicy.PinCertificates(
        certificates: ServerTrustPolicy.certificatesInBundle(),
        validateCertificateChain: true,
        validateHost: true
    )

    let serverTrustPolicies: [String: ServerTrustPolicy] = [
        "api.oursite.com": certificates
    ]

    let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()

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

    return manager

在此之前,它只是使用Alamofire.request(...,并且这些请求工作得非常好,但现在每次调用都会给我一个错误:

Error Domain=NSURLErrorDomain Code=-999 "cancelled"

我是否错误地设置了管理器?也许我的证书创建不正确,导致它不起作用?

【问题讨论】:

【参考方案1】:

请确保您的manager 在请求后没有在短时间内释放。例如,将其作为自定义 Manager 类中的存储属性。

【讨论】:

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

AlamoFire:公钥固定不起作用

Alamofire“安装”不起作用(嵌入式二进制文件中的红色文本)

Alamofire 呼叫在循环内不起作用

带有 MultiPart 表单数据中的参数的图像上传在 Alamofire 4.0 中不起作用

Swift Alamofire 发布请求不起作用,

Alamofire 超时不起作用