ここでは初心者ですが、MITM攻撃の対象となるアプリがあります。
少し調べてみると、SSLピン留めを行う必要があるようです。つまり、サーバーの公開鍵/証明書のコピーを保持して、応答がそこからのものかどうかを判断できるようにします。
これを行う方法がわかりません。ネットワークを処理するために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)
)
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)