繁体   English   中英

如何在 Alamofire swift 5 中执行 SSL 公钥固定

[英]how to do SSL public key pinning in Alamofire swift 5

我正在尝试将 SSL 公钥固定在 Alamofire swift 5 中集成。但我发现ServerTrustPolicyManager已被弃用。 请帮我整合。 谢谢。

要集成 SSL 公钥固定,您首先必须通过拖放将 SSL 证书添加到项目的目标中。

要测试您的证书格式是否正确,您可以尝试从主Bundle中的AlamofireExtensionpublicKeys参数获取值,如下所示:

print("Bundle public keys: \(Bundle.main.af.publicKeys)")

如果该数组至少有一个元素,那么您就准备好了。 如果没有,请尝试将 SSL 证书导入 Mac 的钥匙串,然后将其导出为.cer ,然后将其添加到项目的目标中。 (这应该工作)

要检查 SSL 证书的公钥是否是您在项目中导入的公钥,您可以在创建Session时将 Alamofire 的ServerTrustManagerPublicKeysTrustEvaluator实例一起使用:

let evaluators: [String: ServerTrustEvaluating] = [
    "your.domain.com": PublicKeysTrustEvaluator()
]
let serverTrustManager = ServerTrustManager(evaluators: evaluators)
let session = Session(serverTrustManager: serverTrustManager)

确保在evaluators字典中,键(上面代码中的"your.domain.com" )是您的服务器域,如果您不希望 Alamofire 执行默认验证和/或验证您可以通过的主机对PublicKeysTrustEvaluator的初始化程序中的那些参数为false

let evaluators: [String: ServerTrustEvaluating] = [
    "your.domain.com": PublicKeysTrustEvaluator(
        performDefaultValidation: false,
        validateHost: false
    )
]
let serverTrustManager = ServerTrustManager(evaluators: evaluators)
let session = Session(serverTrustManager: serverTrustManager)

然后您必须使用此Session实例在您的域中发出任何请求,如下所示:

let url = "https://your.domain.com/path/to/api"
session.request(url, method: .post, parameters: parameters).responseDecodable { response in
    
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM