【发布时间】:2020-10-25 10:13:58
【问题描述】:
我正在尝试使用自定义证书连接到我的 https 服务器(在服务器上导出 .p12 证书)。
这是我的代码:
let filePath = Bundle.main.path(forResource: "ch-server", ofType: "cer")
let data = try! Data(contentsOf: URL(fileURLWithPath: filePath!))
let certificate = SecCertificateCreateWithData(nil, data as CFData)!
let pinEvaluator = PinnedCertificatesTrustEvaluator(certificates: [certificate], acceptSelfSignedCertificates: true, performDefaultValidation: true, validateHost: true)
let trustManager = ServerTrustManager(evaluators: [CHConstants.ApiHost: pinEvaluator])
let session = Session(serverTrustManager: trustManager)
session.request(url, method: .post, parameters: ["phone", phone], encoder: JSONParameterEncoder.default, headers: headers).responseJSON { response in
switch response.result {
case .success:
print("data:\(response.data)")
case let .failure(error):
print("error:\(error)")
}
}
// AF.request(url, method: .post, parameters: ["phone", phone], encoder: JSONParameterEncoder.default, headers: headers).responseJSON { response in
// switch response.result {
// case .success:
// print(response.data)
// case let .failure(error):
// print(error)
// }
// }
但响应是错误的:
error:sessionDeinitialized
【问题讨论】:
-
如果您想固定您的自签名证书并且您的目标中有
.cer文件,您可以将pinEvaluator的创建减少为:let pinEvaluator = PinnedCertificatesTrustEvaluator(acceptSelfSignedCertificates: true, performDefaultValidation: false, validateHost: true) -
你是怎么解决的?
标签: swift https certificate alamofire