CharlesでSSL通信を覗く(/ω・\)

こんにちは、サイオステクノロジー技術部 武井です。今回は、便利だなと思ったちょっとしたツールを備忘録も兼ねて紹介します。CharlesというツールでHTTPやHTTPSの通信を覗き見ることができます。Fiddlerみたいなものです。Macでも使えるのが嬉しいです。

仕組み

HTTPのプロキシとして動作します。HTTPの場合は普通のHTTPプロキシとして動作するので、その動きは容易に想像出来ると思いますが、面白いのはHTTPSプロキシとして働くときです。以下の図のように動作します。

Screen Shot 2018-08-27 at 19.10.03

(1) ユーザーは、ブラウザからHTTPSのWebサイトにアクセスします。このときブラウザのプロキシはCharlesに向けているものとします。

(2) Charlesがリクエストをプロキシして、HTTPSのWebサイトに到達します。

(3) HTTPSのWebサイトからSSL証明書を取得します。

(4) Charlesが、HTTPSのWebサイトから取得した証明書を、Charlesが発行したSSL証明書に置き換えます。この証明書はCharles内にある自己認証局がサインしたオレオレ証明書になります。

(5) ユーザーは、Charlesが発行した証明書を受け取ります。

Screen Shot 2018-08-27 at 19.13.36

(6) ユーザーは、Charlesが発行したSSL証明書で、HTTPSのWebサイトに送りたいデータを暗号化します。

(7) Charlesが発行したSSL証明書に対応する秘密鍵で、(6)で送付したデータを復号化します。

(8) 復号化されたデータをCharles内に保存します。このデータをCharlesの画面から見ることが出来ます。

(9) HTTPSのWebサイトのSSL証明書で、(8)のデータを暗号化します。

(10) (8)のデータをHTTPSのWebサイトに送付します。

上記の流れを見てみればわかるのですが、バッチリ(9)で復号化された生データを取得出来ています。

インストールと設定

以下のURLでダウンロード出来ます。

https://www.charlesproxy.com

Charlesを起動して、「Help」→「SSL Proxying」→「Install Charles Root Certificate」の順にクリックします。

Screen Shot 2018-08-27 at 19.20.56

 

Macのキーチェーンアクセスを見てみると、Charlesで発行されたCA証明書があるのがわかります。

Screen Shot 2018-08-27 at 19.23.58

 

証明書をダブルクリックします。このCA証明書を常に信頼するようにしておかないと、ブラウザでアクセスしたときに警告が出たり、アクセスできないサイトが出たりしてしまいます。 以下のように「When using this certificate」を「Always Trust(常に信頼)」にします。

Screen Shot 2018-08-27 at 19.26.03

 

「Proxy」→「SSL Proxy Settings…」の順にクリックします。

Screen Shot 2018-08-27 at 19.28.59

 

「Add」をクリックして、以下のように入力して、「OK」をクリックします。これはCharlesがプロキシする対象のサイトを定義するもので、ここではすべてのサイトを対象にしています。

Screen Shot 2018-08-27 at 19.32.05

 

これで準備OKです。ブラウザのプロキシを変更しましょう。ブラウザとCharlesが同じPCにインストールされているのであれば、プロキシのホスト名は127.0.0.1、ポートは8888でOKのはずです。

では、試しにhttps://tech-lab.sios.jp/にアクセスしてみましょう。

Screen Shot 2018-08-27 at 19.37.34

HTTPSのサイトなんですが、バッチリSSL通信の中身を見ることが出来ます。

これがあれば、アプリ開発のときにHTTPS通信をモニタしたいときにすごく役に立つと思いおますヮ(゚д゚)ォ!

ちなみにですが、このソフトウェアは有償になります。無償でも利用は可能ですが、起動後30分経過すると自動で終了してしまうようです。

Screen Shot 2018-08-28 at 15.04.28

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*