web-dev-qa-db-ja.com

Swift AlamoFireでのSSLピン留め

ここでは初心者ですが、MITM攻撃の対象となるアプリがあります。

少し調べてみると、SSLピン留めを行う必要があるようです。つまり、サーバーの公開鍵/証明書のコピーを保持して、応答がそこからのものかどうかを判断できるようにします。

これを行う方法がわかりません。ネットワークを処理するためにSwiftでAlamoFireを使用しています。

15
user3412996

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)
)
15
Antzi

Alamofire5.0がリリースされました。そして、sslpinnigが変更されました。切り取られた以下のコードを見てください。

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)
0
Emre Gürses