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 中 属性。
我已经为我的项目添加了一个 .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 中 属性。