web-dev-qa-db-ja.com

一部のiPhoneアプリがCharles ProxyとのSSLハンドシェイクを完了しないのはなぜですか?

私は、Charles Proxyを使用して、iPhoneから送信されるすべてのトラフィックを確認しています。私は自分のiPhoneにSSL証明書/プロファイルをインストールしており、SSL暗号化されたトラフィックの多くを見ることができます。ただし、一部のアプリケーションはsslハンドシェイクを完了していないようです。

エラー:「SSLHandshake:リモートホストはハンドシェイク中に接続を閉じました」。CharlesProxyは、Charlesルート証明書を信頼するようにアプリケーションを構成することを提案します。私は自分のプロファイルを自分のiPhoneにインストールしたときにやったと思いましたか?

この/それを修正する方法の説明はありますか?

44
Grant Brown

システム上の信頼できるCAのいずれかに署名された証明書を単に期待するのではなく、単一の特定の証明書または特定の公開鍵を含む証明書を期待するアプリケーションがあります。これは、証明書/公開キー固定と呼ばれます。このアプリケーションでは、Charles ProxyのCAをシステム上で信頼済みとして設定すると、このCAを使用しないため機能しません。

この/それを修正する方法の説明はありますか?

アプリケーションが単一の証明書/公開キーのみを信頼し、ローカルで信頼されたCAによって署名されているという理由だけで何かを信頼しないように構築されている場合、SSLインターセプトを行うには元の証明書とその秘密キーが必要になります。これらがないため、SSLインターセプトを行う方法はありません。

31
Steffen Ullrich

はい、SSLピンニングは可能です。 iOS 10.3の時点では、Webサイトに現在記載されていないCharlesルート証明書を信頼するために、追加の手順を実行する必要があります。

Settings > General > About > Certificate Trust Testings

ソース: https://www.neglectedpotential.com/2017/04/trusting-custom-root-certificates-on-ios-10-3/

170
Neil Sarkar