メインコンテンツまでスキップ

HTTPS リクエスト/レスポンスの SSL エラー

Proxyman で "SSL Handshake Failed" などの SSL エラーを解決します。Proxyman 証明書がインストールされて信頼されているかを確認し、SSL ピンニングが原因でないかを切り分けます。

1. 症状​

  • Proxyman アプリで HTTPS 通信が表示されません。
  • HTTPS のリクエストとレスポンスで SSL エラーが発生します。
  • Response パネルに SSL Handshake Failed または Possible Certificate Pinning と表示されます。
エラーコード -9806 の Client SSL Handshake Failed を表示している Proxyman の Response パネル

2. 解決方法​

SSL ハンドシェイクが失敗する原因はさまざまです。以下の手順に沿って、問題の原因を特定してください。

2.1 モバイルデバイス​

iOS デバイス​

  • iOS セットアップガイドに従い、Proxyman の CA 証明書をデバイスにインストールして信頼してください。
  • Facebook、Instagram、Apple、WhatsApp などの人気アプリを傍受しようとしている場合、これらのアプリは SSL ピンニングで保護されているため、傍受できません。
  • お使いの iOS アプリが SSL ピンニングを使用していないか確認してください。使用している場合は、無効にしてください。

iOS シミュレータ​

iOS シミュレータのセットアップガイドに従い、Proxyman の CA 証明書をシミュレータにインストールして信頼してください。

Android デバイス​

  • Android デバイスのセットアップガイドに従い、Proxyman の CA 証明書をデバイスにインストールして信頼してください。
  • 5 番目の手順が完了しているか確認してください(ドメインを次の 2 つのファイルに追加します:res/xml/network_security_config.xml と AndroidManifest.xml)。
  • 自分が所有していない Android アプリを傍受しようとしている場合、傍受はできません ❌

Android エミュレータ​

  • Android エミュレータのセットアップガイドに従い、Proxyman の CA 証明書をエミュレータにインストールして信頼してください。
  • 5 番目の手順が完了しているか確認してください(ドメインを次の 2 つのファイルに追加します:res/xml/network_security_config.xml と AndroidManifest.xml)。
  • 自分が所有していない Android アプリを傍受しようとしている場合、傍受はできません ❌

React Native アプリ​

Flutter​

上記のすべての手順を試して確認しても、SSL エラーが発生しますか?

https://google.com の HTTPS リクエスト/レスポンスがエラーなく表示されるか確認する​

  1. デバイスを用意します。
  2. Web ブラウザを開きます(iOS では Safari、Android では Google Chrome)。
  3. https://google.com にアクセスします。
  4. macOS 版 Proxyman で、リクエストを右クリックし、このドメインの Enable SSL Proxying を選択します。その後、ページを再読み込みします。
  5. HTTPS のレスポンスが表示されるか確認します。

✅ 成功​

  1. https://google.com の HTTPS レスポンスが表示されれば、証明書は正しく設定されています ✅
  2. 問題はアプリ側にある可能性があります。対象のドメインやアプリで再度お試しください。それでも SSL エラーが発生する場合、アプリは SSL ピンニングで保護されている可能性が高いです。
  3. SSL ピンニングが原因ではないと思われる場合は、GitHub で issue を作成してください(デバイス、OS のバージョン、アプリ名などをお知らせください)。

❌ 失敗​

  • Proxyman 証明書がデバイスに正しくインストールされていないか、正しく信頼されていない可能性があります。2.1 モバイルデバイスに戻り、手順に従ってください。
  • すべて完了しているのに SSL エラーが発生する場合は、GitHub で issue を作成してください(デバイス、OS のバージョン、アプリ名などをお知らせください)。

2.2 MacBook または Windows PC​

次の環境で SSL エラーが発生する場合:

  • Mac(MacBook、Mac mini、Mac Studio):Mac に証明書をインストールして信頼してください。macOS ガイドに従ってください。
  • Windows:Windows マシンに証明書をインストールして信頼してください。Windows ガイドに従ってください。
  • Java:Java VM ガイドに従ってください。
  • Firefox:Firefox ガイドに従ってください。
  • Python:Python ガイドに従ってください。
  • Ruby:Ruby ガイドに従ってください。
警告

一部のネットワークライブラリ(Ruby、NodeJS、Python、Golang)は、デフォルトでは自己署名証明書を信頼しません。ライブラリに対して、証明書を信頼するよう設定する必要があります。

=> 解決するには、Automatic Setup を使用してください。Setup → Automatic Setup… → Open New Terminal… の順に操作し、開いた Terminal でスクリプトを実行します。対応している NodeJS、Python、Ruby、Golang のライブラリについては、証明書の信頼設定が自動で行われます。その他のライブラリについては、"<Your framework/library> self-signed certificate" で検索してください。

2.3 SSL ピンニングが原因ですか?​

  • アプリの HTTPS レスポンスがまだ表示されない場合、アプリは SSL ピンニングで保護されている可能性があります。SSL ピンニングを使うと、MitM アプリがコンテンツを参照できなくなります。Facebook、Apple、Instagram、Messenger などの人気アプリの多くが SSL ピンニングを使用しています。
  • アプリで一時的に SSL ピンニングを無効化 して、再度お試しください。

SSL ピンニングの詳細は、次の記事をご覧ください:SSL ピンニングで iOS の中間者攻撃を防ぐ方法

備考

すべて試しても原因がわからない場合は、GitHub で issue を作成してください。

あわせて、Proxyman の macOS/Windows 版、Proxyman のバージョン、iOS/Android デバイスなどをお知らせください。

動画​

Proxyman で HTTP と HTTPS の通信をキャプチャする · proxyman.com で視聴

関連記事​