プロキシでのhttps通信(CONNECTメソッドとは?)

技術要素

http通信におけるセキュリティ関係でCONNECTメソッドという言葉を聞くことが結構あるので、今回はCONNECTメソッドに関して調べてみました!

 

プロキシが見えなければならないものは?

CONNECTメソッドとは何か?を知るために、先ずはプロキシのお話から始めます。

プロキシはHTTP通信を代理してくれるという大変便利な役割があります。大きな仕組みとしては、クライアントのリクエストhttpのペイロード(データの中身)を見て、リクエストするページのパス名(”/”スラッシュ以下、つまりFQDN以降)をサーバに渡して、プロキシに返ってきたhttpレスポンスをクライアントに返す、というものです。

例えば、「http://itmanabi.com/connect-method/」というURLへアクセスした場合、

FQDN以降の「/connect-method/」の部分はプロキシがhttpデータの中身を見て情報を取り出しているのですね。

つまりペイロード(データの中身)をプロキシが見える必要があるのです!

そうなるとHTTPS(http over TLS)だとペイロードが暗号化されてしまっているので、その中にあるリクエストページのパス名をプロキシが見ても分からないじゃないか!!となる訳です(プロキシは勿論、HTTPS通信の秘密鍵を持っていないので、複合できません…)。

そこで登場する便利なものが、CONNECTメソッドです!

 

CONNECTメソッドとは?

CONNECTメソッドを使うとHTTP以外のプロトコル(例えばHTTPS)をトンネル化するように指示を出すことができます。

暗号化通信のHTTPSの場合はプロキシに対してTLS通信をトンネル化するように指示を出すことになりますが、先ずはホスト名だけのURL(いわゆるFQDN)でプロキシがサーバとHTTPコネクションを張ります。その上にTLSを流し、その上に更にhttpを流す形を取ってhttps通信を実現してます。

つまりhttps通信の場合、プロキシはトンネルを張って、来たデータを左から右へ横に流すだけです。

HTTPとHTTPS動きが結構違うのですね。

 

簡単に図にまとめてみました。

プロキシ経由アクセスの流れ

 

まとめ

今回はCONNECTメソッドの仕組みを学習してみました。プロキシを利用してhttps通信をする際にCONNECTメソッド使うのですが、これを使って内部情報を外部の悪意あるサーバへ暗号化して通信することもできるので、利用する時は気を付ける必要がありますね。

ただ、最近ではSSL Decryption(復号)機能は殆どのUTM/Proxy製品が対応しているそうですので、CONNECTメソッドを使ってプロキシ経由のHTTPS通信を行う動きはあまり無いのかもしれませんね。

 

以下サイトが分かり易いです。

参考URL)

・日経XTech記事

・ITの窓辺から

※DMZ上のメール転送サーバ問題(SC平成28年春問題2)で出題

タイトルとURLをコピーしました