首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在阿拉莫火焰快速5中实现SSL公钥钉扎

如何在阿拉莫火焰快速5中实现SSL公钥钉扎
EN

Stack Overflow用户
提问于 2022-08-04 09:01:12
回答 1查看 506关注 0票数 1

我正在尝试将SSL公钥钉扎在Alamofire swift 5中,但我找到了不推荐的ServerTrustPolicyManager。请帮我整合一下。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-04 10:17:51

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

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

代码语言:javascript
运行
复制
print("Bundle public keys: \(Bundle.main.af.publicKeys)")

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

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

代码语言:javascript
运行
复制
let evaluators: [String: ServerTrustEvaluating] = [
    "your.domain.com": PublicKeysTrustEvaluator()
]
let serverTrustManager = ServerTrustManager(evaluators: evaluators)
let session = Session(serverTrustManager: serverTrustManager)

请确保在evaluators字典中,键(上面代码中的"your.domain.com")是您的服务器域,如果您不希望Alamofire执行默认验证和/或验证主机,则可以将false传递给PublicKeysTrustEvaluator初始化器中的这些参数:

代码语言:javascript
运行
复制
let evaluators: [String: ServerTrustEvaluating] = [
    "your.domain.com": PublicKeysTrustEvaluator(
        performDefaultValidation: false,
        validateHost: false
    )
]
let serverTrustManager = ServerTrustManager(evaluators: evaluators)
let session = Session(serverTrustManager: serverTrustManager)

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

代码语言:javascript
运行
复制
let url = "https://your.domain.com/path/to/api"
session.request(url, method: .post, parameters: parameters).responseDecodable { response in
    
}

正如@JonShier在评论中指出的那样:您需要在声明范围之外保持Session活动。这通常是通过单个或其他外部引用来完成的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73233087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档