HTTPS リクエスト/レスポンスの SSL エラー
Proxyman で "SSL Handshake Failed" などの SSL エラーを解決します。Proxyman 証明書がインストールされて信頼されているかを確認し、SSL ピンニングが原因でないかを切り分けます。
1. 症状
- Proxyman アプリで HTTPS 通信が表示されません。
- HTTPS のリクエストとレスポンスで SSL エラーが発生します。
- Response パネルに SSL Handshake Failed または Possible Certificate Pinning と表示されます。
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 アプリ
- アプリが React Native アプリの場合は、React Native ガイドに従ってください。
Flutter
- Flutter セットアップガイドに従ってください。
上記のすべての手順を試して確認しても、SSL エラーが発生しますか?
https://google.com の HTTPS リクエスト/レスポンスがエラーなく表示されるか確認する
- デバイスを用意します。
- Web ブラウザを開きます(iOS では Safari、Android では Google Chrome)。
- https://google.com にアクセスします。
- macOS 版 Proxyman で、リクエストを右クリックし、このドメインの Enable SSL Proxying を選択します。その後、ページを再読み込みします。
- HTTPS のレスポンスが表示されるか確認します。
✅ 成功
- https://google.com の HTTPS レスポンスが表示されれば、証明書は正しく設定されています ✅
- 問題はアプリ側にある可能性があります。対象のドメインやアプリで再度お試しください。それでも SSL エラーが発生する場合、アプリは SSL ピンニングで保護されている可能性が高いです。
- 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 デバイスなどをお知らせください。