我是这里的新手,但我有一个受到 MITM 攻击的应用程序。
经过一番研究,听起来我需要做 SSL Pining,即保留我的服务器公钥/证书的副本,以便可以确定响应是否来自它。
我不知道该怎么做,我在 Swift 中使用 AlamoFire 来处理网络。
我是这里的新手,但我有一个受到 MITM 攻击的应用程序。
经过一番研究,听起来我需要做 SSL Pining,即保留我的服务器公钥/证书的副本,以便可以确定响应是否来自它。
我不知道该怎么做,我在 Swift 中使用 AlamoFire 来处理网络。
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)
)
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)
如此处所示:https ://github.com/Alamofire/Alamofire/issues/366
这当然是社区希望支持的事情,但还没有一个确定的时间框架。我暂时说,你会想继续使用 AFNetworking,并密切关注 Alamofire 项目的新功能。