Alamofire的证书固定不起作用

时间:2016-04-13 20:46:54

标签: ios swift ssl ssl-certificate alamofire

我已将.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 个答案:

答案 0 :(得分:3)

请确保您的manager在请求后的短时间内未被解除分配。例如,将其作为自定义Manager类中的存储属性。