我是一个新手,但我有一个受MITM攻击的应用程序。
经过一番研究后,我觉得我需要进行SSL Pining,即保留我的服务器公钥/证书副本,以便确定响应是否来自它。
我不知道如何做到这一点,我在Swift中使用AlamoFire来处理网络。
答案 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项目的新功能。