· ルールと振り分け · 約10分

ShadowrocketでHTTPS通信を解析する方法|証明書設定とURLリライト実践

iPhoneでHTTPS通信を確認したい、テスト用URLを書き換えたい人向けに、ShadowrocketのMitM設定を解説します。CA証明書のインストールと信頼設定、対象ホストの絞り込み、URL Rewriteの記述例、ログでの動作確認まで紹介。証明書エラーやルール不一致の見分け方に加え、通信内容を扱う際のプラ…

この記事の概要

ShadowrocketでHTTPS通信を確認するには、対象ホストを限定したMitM設定、CA証明書のインストールと信頼設定、URL Rewriteのルールをそれぞれ正しく設定する必要があります。この記事では、自分が管理するテスト用ドメインを例に、設定の準備からログでの確認、問題が起きたときの切り分けまでを説明します。証明書を信頼させる操作にはセキュリティ上の影響があるため、対象を限定し、検証が終わったら設定と証明書を見直してください。

1. HTTPS解析でできることと、事前に知っておくこと

HTTPSの通信内容は暗号化されているため、通常は接続先のホスト名が分かっても、リクエストのパスや応答本文まで確認できるとは限りません。MitM(中間者による通信の検査)を有効にすると、Shadowrocketが対象ホストの通信を中継し、端末にインストールして信頼させたCA証明書を使ってHTTPS通信を処理します。その結果、対応する通信ではURLやヘッダーなどを確認できる場合があります。

これはHTTPSの暗号化を一律に解除する機能ではありません。対象ホストがMitMの対象に含まれていない、証明書の信頼設定が完了していない、アプリ側が独自の証明書検証を行っているなどの理由で、通信内容を取得できないことがあります。また、Webサイトやアプリの動作を変える設定ではありません。まずは自分で管理するテスト用ホストと、機密情報を含まないテスト通信だけを使ってください。

3段階
ホスト指定、証明書の信頼、通信の検証
2種類
MitMの対象範囲とURL Rewriteの対象範囲
1つの原則
自分が管理するホストに対象を限定する

MitMの対象ホストとURL Rewriteの条件は、別々に確認してください。前者はHTTPS通信を処理する対象を決め、後者は条件に一致したURLを書き換えるルールです。URL Rewriteだけを記述しても、そのホストのHTTPS通信を解析できるようになるわけではありません。変更前に現在のConfigを保存し、テストに使うホスト名と期待する動作を記録しておくと、元に戻すときや結果を比較するときに役立ちます。

2. CA証明書をインストールして信頼設定を行う

証明書の設定は、Shadowrocket側でCA証明書を生成・インストールする操作と、iOS/iPadOS側でその証明書を信頼する操作に分かれます。アプリ内でインストールを完了しただけでは、システムの完全な信頼設定が終わっていない場合があります。メニューの表示名や配置はアプリやOSのバージョンで異なることがあるため、画面に表示されるCertificate関連の項目を確認しながら進めてください。

  1. Configを保存

    Configで現在有効な設定を確認し、編集前のコピーを保存します。共有する場合は、接続情報や個人情報が含まれていないかを先に確認してください。

  2. CAをインストール

    ShadowrocketのSettingsを開き、Certificateに関する項目からCA Certificateのインストールを実行します。表示されるシステムの確認画面を読み、端末への追加を許可します。

  3. 完全な信頼を有効化

    iOS/iPadOSのSettings → General → About → Certificate Trust Settingsを開き、ShadowrocketのCA証明書に対応する項目が表示されていることを確認して、完全な信頼を有効にします。

  4. 対象ホストを限定

    ConfigのMitM設定では、テスト用ホストだけを対象にします。証明書を信頼させた後も対象を広げず、テスト後に不要となった設定を解除できるように記録します。

  5. テスト通信を確認

    Shadowrocketで接続を開始し、対象ホストに新しいリクエストを送ります。Homeの通信ログで対象ホストの記録を開き、HTTPS通信の詳細が表示されるか確認します。

証明書の完全な信頼を有効にすると、その証明書を使った通信を端末が信頼することになります。信頼するCA証明書は必要なものだけに限定し、証明書やConfigを不用意に共有しないでください。検証後はSettingsのCertificate関連画面で証明書を確認し、不要になった証明書を削除するとともに、ConfigのMitM設定も無効化または削除します。

3. MitMの対象ホストをConfigで指定する

HTTPS通信を解析する設定は、利用中のConfigに記述します。別のConfigを編集したまま切り替えていないと、設定を保存しても動作に反映されません。以下は構文を説明するための例です。test.example.comは実在サービスの接続先として提示しているものではありません。実際には、自分が管理し、テストが許可されているホスト名に置き換えてください。

[MITM]
hostname = test.example.com
enable = true

hostnameにはテスト対象のホスト名を指定します。例のように単一ホストから始め、複数のホストや広範囲のワイルドカードを一度に追加しないでください。対象ホストを増やす必要がある場合も、各ホストを管理していること、検査が許可されていること、不要な通信を巻き込まないことを確認してから変更します。Configの既存の[MITM]セクションがある場合は、重複したセクションを新たに作らず、既存の項目を編集してください。

項目 確認する内容 避けたい設定
[MITM] 使用中のConfigに設定があり、保存されている 別のConfigや未使用のファイルだけを編集する
hostname 自分が管理するテスト用ホスト名に限定する 用途を確認せず広範囲のホストを指定する
enable テスト時にMitMが有効になっている 検証後も有効のまま放置する
証明書 端末にインストールされ、信頼設定を確認できる 出所や用途が分からない証明書を信頼する

保存したら、Home → Global Routingでテスト時のルーティングを確認し、Configを使う場合はConfigが選択されていることを確かめます。続いて、Homeで編集したConfigが有効か、接続が開始されているかを確認します。Configを切り替えたときは、対象ホストへの新しいリクエストを発生させてからログを見てください。以前から開いているページの表示だけでは、設定が適用されたかを判断しにくい場合があります。

4. URL Rewriteを追加し、ログで動作を検証する

URL Rewriteは、条件に一致するURLを別のURLへ書き換える設定です。たとえば自分が管理するテスト用ページで、特定パスへのアクセスを別のテスト用パスへ転送する場合は、次のようなルールを使えます。置き換え先も管理対象のテスト用ホストとパスにしてください。この例は書式の説明用であり、一般のWebサイト向けの設定を示すものではありません。

[URL Rewrite]
^https://test\.example\.com/old$ https://test.example.com/new 302

この正規表現では、指定したホスト上の/oldに一致するURLを、/newへの302リダイレクトに書き換えます。末尾の302は一時的なリダイレクトを示す指定です。正規表現の記号、ドットのエスケープ、スキーム、パスの違いで一致結果が変わるため、最初は条件を狭くして確認してください。ルールは既存の[URL Rewrite]セクションに追加し、同じセクションを重ねて作らないようにします。

結論:ログに対象リクエストがあるかを先に見る

通信ログに対象ホストの新しいリクエストがない場合は、URL Rewriteの正規表現より先に、接続状態、使用中のConfig、対象ホストの指定を確認します。ログに記録があり、URLも一致しているのに結果が違う場合は、書き換え先、ステータスコード、既存ルールとの順序を一項目ずつ確認してください。

5. よくある質問

証明書を入れたのにHTTPSの内容が表示されません

Settings → General → About → Certificate Trust Settingsで完全な信頼が有効か確認します。次に、使用中のConfigでMitMが有効か、対象ホストがhostnameに含まれるかを確認し、対象ページを再読み込みして新しいログを見てください。

一部のアプリだけ通信を確認できないのはなぜですか

アプリが証明書ピンニングなど独自の検証を行う場合、CA証明書を信頼させてもMitMが成立しないことがあります。設定を広範囲に変更せず、まず自分で管理するテスト用ホストで動作を確認してください。

URL Rewriteを追加してもリダイレクトされません

Configの[URL Rewrite]にルールが保存されているか、ホストとパスが正規表現に一致するかを確認します。さらに、MitMの対象ホストとGlobal Routing、使用中のConfigを確認してから、新しいリクエストを送ってログを見ます。

テストが終わったら何を戻せばよいですか

ConfigのMitMとURL Rewriteのテスト用ルールを無効化または削除し、SettingsのCertificate関連画面で不要なCA証明書を削除します。証明書の信頼設定も確認し、テスト前に保存したConfigと見比べて元のルーティングに戻してください。

HTTPS通信の解析は、対象ホスト、証明書、Config、URL Rewriteを分けて確認すると原因を絞り込みやすくなります。特にCA証明書の信頼設定は通信の安全性に関わるため、必要な期間と対象に限って使用し、テスト後の削除までを作業手順に含めてください。アプリやOSの表示が手元の画面と異なる場合は、現在の画面に表示される説明を確認してから操作します。

App StoreでShadowrocketをダウンロード