sHTTPsProxy.exe manual
対話機能はないがSSL証明書のMITMをするHTTP Proxy
こちらのsPortRedirecotr.exe Manualには対話機能(トラップ)があるが、sHTTPsProxy.exeにはない。
その分、動作は安定している
(受信したパケットをそのまま転送するだけなので・・・)
(トラップするということは、バッファに保存しなきゃいけないし、接続情報も保持しなきゃいけないし、どの接続がどのパケットかという関係も保持しなきゃいけないので、結構複雑なコードになっている)
「sWebTool」 の ver5.2.0.0 から同梱されている
画面説明(Certificateタブ)
そのまんまだけど、
- 「ClientCertificate」タブは、クライアント証明書
- 「ServerCertificate」タブは、サーバ証明書
- 「SelfSigner」タブは、自己認証局
の設定をするタブ。
- 存在しないファイルパスを指定すると「Create」ボタンで作成できる
- 存在するファイルパスを指定すると「Load」ボタンでメモリにロードすることができる
- ロードした後で「Info」ボタンで、証明書の情報を閲覧することができる
画面説明(HTTPS Proxy Serverタブ)
httpsプロキシとして動作させる設定
Server
サーバとして待機するIPアドレス(大抵は127.0.0.1または0.0.0.0だろう)と待機ポートを指定する
サーバ証明書または自己認証局の証明書のどちらかをロードしていれば、「IsSSL」をチェックできるようになる
- 「TLS1.2」はTLS1.2を使うかどうか
- 「DynamicCertificate」は、自己認証局の証明書の場合、チェックすることができて、動的にサーバ証明書を作成/提示するかどうか
- その隣のテキストボックスには、動的にサーバ証明書を生成するのだけど、ホスト名が認識できない場合の規定値を与えておく
Client
- タンデムに配置している上位のHTTPプロキシ、またはWebサーバのIPアドレスを指定する
または
- 「Dynamic」をチェックして、転送先サーバを動的に決定する
または
- 「WPAD/ProxyPac」ボタンを押して、スクリプトファイルを使うか
- 「IsSSL」をチェックすると、SSLクライアントとして接続する
- 「IsSSL」をチェックしないと、SSLとしては動作しない(SSLクライアント機能は通信経路上の他のツールが担うだろう)
その他
下図の赤枠で囲まれたセレクトドロップダウンボックスは
- 「None」は何もしない
- 「DropConnect」はWebブラウザ(クライアント)から送られてきた、CONNECTメッセージを破棄する
- 「ForceConnect」はWebブラウザ(クライアント)から送られてこなくても、SSLの場合はCONNECTリクエストを新規作成して送信/転送する
画面説明(SSL Throughタブ)
SSL/TLS接続において、MITMではなく、サーバと直接通信する必要がある場合の例外ホストをここに追記する
例えば、証明書ピニングとか、認証局ピニングされると、MITMできなくなるので、診断対象でなければSSLスルーをしてしまっていいだろう。
- 「DynamicConnectOverSSLThrough」チェックは、もし上位プロキシが指定してあったとしても、SSLスルーのホストは上位プロキシには接続せずに、直接接続するかどうか
- 「ConnectErrorAndSSLThrough」チェックは、MITMを試してみて、エラーになったら、接続先ホストをこのリストに追加して、以後はSSLスルーにするかどうか
画面説明(Networkタブ)
現在、接続中の情報が表示される
画面説明(P12 to CRTタブ)
そのまんまだけど、p12形式をcrt形式に変換することができる。
実践編
実践編(認証局証明書の作成)
「SelfSigner」タブで、
- 「CA File」存在しないファイルを指定
- パスワードは証明書のパスワード
- 「CA Name」と「CA Alias」は、まぁ適当に設定する(例えば "NO TRUST ME" とか)
「CreateCA」ボタンで、オレオレ認証局の証明書が作成される
こんな感じ
利用に際して
当然ですが、本ツールは、デバグ用、開発用であり、悪用厳禁ですよ。