Alamofire 中的证书固定不起作用

Certificate pinning in Alamofire not working

我已经为我的项目添加了一个 .der 证书,该证书被 ServerTrustPolicy.certificatesInBundle() 识别。我现在正在创建一个管理器,然后用于进行 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"

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

请确保您的 manager 不会在请求后的短时间内解除分配。例如,将其存储在自定义管理器 class 中 属性。