19

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

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

我不知道该怎么做,我在 Swift 中使用 AlamoFire 来处理网络。

4

3 回答 3

17

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)
)
于 2015-12-08T15:50:46.240 回答
10

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)
于 2019-09-24T06:31:59.480 回答
0

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

这当然是社区希望支持的事情,但还没有一个确定的时间框架。我暂时说,你会想继续使用 AFNetworking,并密切关注 Alamofire 项目的新功能。

于 2015-03-11T20:52:19.727 回答