斯威夫特AlamoFire的ssl钉扎

时间:2015-02-17 22:25:16

标签: swift ssl certificate alamofire pinning

我是一个新手,但我有一个受MITM攻击的应用程序。

经过一番研究后,我觉得我需要进行SSL Pining,即保留我的服务器公钥/证书副本,以便确定响应是否来自它。

我不知道如何做到这一点,我在Swift中使用AlamoFire来处理网络。

3 个答案:

答案 0 :(得分:15)

Alamofire现在实施了证书固定。 您需要的文档位于Readme.md

https://github.com/Alamofire/Alamofire

查看他们的示例实现:

let serverTrustPolicies: [String: ServerTrustPolicy] = [
    "test.example.com": .PinCertificates(
        certificates: ServerTrustPolicy.certificatesInBundle(),
        validateCertificateChain: true,
        validateHost: true
    ),
    "insecure.expired-apis.com": .DisableEvaluation
]

let manager = Manager(
    serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
)

答案 1 :(得分:1)

Alamofire 5.0现在已发布。并更改了ssl pinnig。请看下面的代码片段。

let configuration = URLSessionConfiguration.default
        configuration.timeoutIntervalForRequest = timeoutIntervalForRequest
        let trustManager = ServerTrustManager(evaluators: [
                     "prod.ehliyetcepte.com": PublicKeysTrustEvaluator(),
                     "dev.ehliyetcepte.com": DisabledEvaluator()])


        self.session = Session(startRequestsImmediately: true,
                               configuration: configuration,
                               delegate: self,
                               serverTrustManager: trustManager)

答案 2 :(得分:-1)

如此处所示:https://github.com/Alamofire/Alamofire/issues/366

  

这当然是社区希望支持的东西,但目前还没有坚实的时间框架。我暂时说,你会想继续使用AFNetworking,并密切关注Alamofire项目的新功能。