ネットワーク

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

2018年10月2日

http通信におけるセキュリティ関係でCONNECTメソッドという言葉を聞くことが結構あります。

プロキシでのhttps通信を実現するにも重要なので、今回は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(SSL)通信をトンネル化するように指示を出すことになりますが、先ずはホスト名だけのURL(いわゆるFQDN)でプロキシがサーバとHTTPコネクションを張ります。その上にTLS(SSL)を流し、その上に更にhttpを流す形を取ってhttps通信を実現してます。

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

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

httpとhttpsそれぞれの流れを簡単に図にまとめてみました。

httpとhttps通信の違い

 

まとめ

今回はCONNECTメソッドの仕組みを解説しました。

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

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

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

以上です!

 

参考URL)

・日経XTech記事

・ITの窓辺から

 

-ネットワーク