如何在 Alamofire 中实现自签名证书?

Posted

技术标签:

【中文标题】如何在 Alamofire 中实现自签名证书?【英文标题】:How to implement self signed certificates in Alamofire? 【发布时间】:2015-03-05 00:56:19 【问题描述】:

我编写了一个基于 swift 的应用程序,带有自签名证书服务器通信。 作为一个网络库,我想使用 Alamofire。 但是 Alamofire 不支持自签名证书。

是否可以轻松实现此功能以及如何实现?

【问题讨论】:

【参考方案1】:

Alamofire 现在可以这样配置了:

let TollerantAlamofire= ()->Alamofire.Manager in
    let policies:[String:ServerTrustPolicy]=[
        "www.mydemoserver.it": .DisableEvaluation
    ]

    let manager=Alamofire.Manager(serverTrustPolicyManager:ServerTrustPolicyManager(policies:policies))

    return manager

()

稍后,当您需要发出请求时,只需使用您配置的实例,如下所示:

var req:Request?
req=TollerantAlamofire
            .request(method, url, parameters: params)

【讨论】:

【参考方案2】:

Alamofire 尚不支持此功能。它很可能最终由社区添加,但该工作尚未提交给项目。如果您想贡献此功能,请务必分叉存储库并提交拉取请求。

如果您想了解如何自己实现此功能,我建议您阅读 ios 上的 SSL pinning 和 TLS verification。您也可以浏览AFNetworking 中的源代码,以了解它是如何实现的。

如果你没有时间自己构建这个功能,那么我建议你暂时在你的 Swift 应用中使用 AFNetworking。 AFNetworking 与 Swift 完美兼容,并且支持 TLS 验证。

【讨论】:

以上是关于如何在 Alamofire 中实现自签名证书?的主要内容,如果未能解决你的问题,请参考以下文章

如何添加自签名SSL证书 自签名SSL证书存风险

本地获取 API 时出现自签名证书错误

https一定是安全的吗

企业为啥不能使用自签名SSL证书?

在 Alamofire 4 中动态允许自签名证书

79) nginx添加linux自签ssl证书