iOS アプリに SSL 証明書の固定を実装する際に問題が発生しました。現在NSURLConnection
、認証チャレンジのデリゲートを使用しています。これで問題なく、アプリへの最初のログイン時に呼び出され、サーバーに接続されていることが保証されます。
私たちは TLS キャッシングを認識しており、ピンニング デリゲート メソッド ( willSendRequestForAuthenticationChallenge ) が 10 分間再度呼び出されることはありません。ログイン時に証明書を確認するだけでよいため、これは実際には問題ではありませんが、より頻繁に確認することが望ましいです。Apple にサポート チケットを提出したところ、TLS キャッシングは、ピニング デリゲート メソッドが定期的にしか呼び出されないことを意味するが、暗号化キー交換が呼び出し間の MITM プロキシ攻撃の発生を防止することを確認する応答を受け取りました。
良さそうですが、そうではないようです。発見したことは次のとおりです。起動時に通常どおりアプリにログインすると、ピン留めデリゲートが呼び出されます。次に、アプリをバックグラウンドで実行し、Burp Suite を実行している macbook のプロキシ サーバーに iPhone を接続します (サーバーの信頼証明書は、この時点で既に iPhone にインストールされています)。その後、アプリをフォアグラウンドにし、ログアウトしてから再度ログインすると、この時点で TLS セッションが無効になっているはずですが、 willSendRequestForAuthenticationChallenge は呼び出されません。
リクエストでさまざまなキャッシング ポリシーを指定しようとしましたが、違いはないようです。MITM プロキシが追加された状態でデリゲートが再度呼び出されない理由がわかりません。アドバイスをいただければ幸いです。