2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

リバースプロキシによるSSL-VPN通信と、リバースプロキシするHTTPS通信の違い

Posted at

はじめに

例えば、DMZ上にあるサーバを経由して、内部ネットワーク上にあるサーバにアクセスするWebアプリケーションを考える上で、

  • リバースプロキシによるSSL-VPN通信
  • リバースプロキシするHTTPS通信

は何が違うのでしょうか?
一見、リバ-スプロキシ型のSSL-VPNとは、HTTPS通信をリバースプロキシで変換しているだけのようにも感じられます。

何をもってSSL-VPNであると言えるのか。
通常のHTTPS通信はSSL-VPNといって良いのか。
まずはVPNとは何かというところから理解すると良さそうです。

VPNに必要なこと

VPNとは、Virtuial Private Networkの言葉どおり、パブリックな環境でも仮想的なプライベートネットワークが実現できるものです。

このとき、プライベートであるということは、

  • ネットワーク通信が秘匿されること
  • 誰でもアクセスできるものではないこと

を意味します。また、どのようなプロトコルでもVPNを使えるためには、

  • 利用したいプロトコルの実装に制限されないこと

も必要になります。

まとめると、VPNに必要な要件として、

①暗号化
②認証
③カプセル化

これら3つが行われている状態でしか、プライベートネットワークにアクセスできない、という環境であればVPNと言えそうです。

では、リバースプロキシ型SSL-VPNと、リバースプロキシするHTTPS通信ではそれぞれどういう扱いでしょうか?

リバースプロキシ型SSL-VPN

①SSLによる暗号化
②パスワードや電子証明書などによるVPN装置との認証
③SSLによるカプセル化
が行われているので、確かにVPNであると言えそうです。

リバースプロキシするHTTPS通信

①SSLによる暗号化
③SSLによるカプセル化
は満たしていると言えそうです。ただし、
②認証
を伴わないため、SSL-VPNとは異なるものになります。

認証の必要性について書いている資料が少なく、
整理に苦労しましたが、やっとモヤモヤが晴れました。

疑問点

これで定義としての違いは明確になりました。ただ、実装を考える上ではまだ疑問が残ります。

ECサイトのようにユーザー認証を行うサイトなら、SSL-VPNと言えるのか?

Noです。
確かに、一見「ログイン認証を行わなければ利用できないアプリケーション」の仕様にすれば、近い扱いにはなると思います。
ただし、そのようなアプリで認証するときは、「プライベートなネットワーク上にあるDBサーバにアクセスしてユーザ認証している」ことになると思います。
これは先の、

次の3つが行われている状態でしか、プライベートネットワークにアクセスできない

を満たせていませんので、SSL-VPNではない、ということになります。

では認証のためのユーザ情報をDMZ上のWebサーバに持たせればSSL-VPNといえるのか?

これは一応Yesになりそうです。
ただしアプリで使う認証情報をDMZに置いたら危険、という別の問題が発生するので、

1.アプリ用の認証とVPNを確立するための認証は別(クライアント証明書など)にする。
2.DMZ上はリバースプロキシ専用サーバとして、Webサーバ以下は内部ネットワークに実装する。

などの工夫が必要であると考えられます。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?