- PR -

SSLリバースプロキシについての質問

投稿者投稿内容
kap
会議室デビュー日: 2007/01/08
投稿数: 5
投稿日時: 2007-01-08 01:00
初めましてkapと申します。

非武装エリアさんのサイト
http://squid.robata.org/ReverseProxy_top.html
http://squid.robata.org/ReverseProxy_ssl.html
を参考にさせていただき、ProxyとWebサーバ1対1の関係で
SSLリバースプロキシを構築しました。

しかし、Httpsでアクセスしても次ページに進むとHttpでの
アクセスになってしまいます。
これは、私の設定に問題があるのでしょか?
調査するポイントや具体的なSquidの設定などご指示いただけると幸いです。
なお、設定については上記サイトにかかれているSquid.confの修正以外は
行っておりません。

当方、Linuxをさわりはじめて、まだ間もないためとんちんかんな
質問をしているかもしれませんが、何とぞよろしくお願いいたします。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2007-01-08 10:53
こんにちは。
squid の設定云々よりも、Webサーバに載せているコンテンツをまず確認した方が良いと思います。
HTML の aタグのhref属性や、formのaction属性等で指定している、次ページのURLが“http://〜”というように絶対パスで指定されていませんか?
squidはSSL暗号化通信の復号をやってくれるだけで、実際のコンテンツのことまで面倒は見ないですから。
kap
会議室デビュー日: 2007/01/08
投稿数: 5
投稿日時: 2007-01-09 07:31
回答ありがとうございます。
Webサーバのコンテンツ内容によってはSSLリバースプロキシが
Webサーバから受け取ったそのままを返してくると言うことですね。

私はてっきり、全てのサイトにおいてSSL化が可能かとおもって
いました。どえらい勘違いでした。(^^;;;

一点ご質問させていただきたいのですが、Webサーバ側で
Httpsのリクエストが処理できるのであれば、問題なく
処理できるのでしょうか?ご存じでしたら教えてください。

私も自分の環境で本日テストしてみます。

よろしくお願いいたします。
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2007-01-09 11:10
こんにちは

SSLリバースプロキシ(SSLアクセラレータ)は基本的にPC<->SSLアクセラレータ間をSSL化するだけです。
バックエンドとのプロトコルはSSLアクセラレータの設定次第です。

PC<--(https)-->SSLアクセラレータ<--(http)-->WEB
SSLアクセラレータによってはコンテンツの中身を見てURL変換の設定が出来るものがあるようです(万能ではありませんが)。

[ メッセージ編集済み 編集者: 末記人 編集日時 2007-01-09 11:12 ]
kap
会議室デビュー日: 2007/01/08
投稿数: 5
投稿日時: 2007-01-09 14:14
返信ありがとうございます。Kapです。

>PC<--(https)-->SSLアクセラレータ<--(http)-->WEB
>SSLアクセラレータによってはコンテンツの中身を見てURL変換の設定が出来るものがあるようです(万能ではありませんが)。

言われていることは理解しているつもりなのですが・・・。
Webサーバ的にはHttpしかサポートされていない場合、
PC<--(https)-->SSLアクセラレータ間を
全てSSL化したいのですが、これはSSLリバースプロキシ(Squid)では
不可能なのでしょうか?

教えてばかりで申し訳ございませんが、どうかご教授いただけませんでしょうか?

angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2007-01-09 16:34
> Webサーバのコンテンツ内容によってはSSLリバースプロキシが
> Webサーバから受け取ったそのままを返してくると言うことですね。

いえ、SSLリバースプロキシであろうと、非SSLリバースプロキシであろうと、「Webサーバから受け取ったそのまま」を返すのが基本でして、そこは問題ではありません。

私が懸念したのは、
 ・https://example.com/ex1.html にアクセスする。( PC→squid SSL )
 ・squid が後背のWebサーバに代理でアクセスし、コンテンツを得る。( squid⇔web 非SSL )
 ・squid が PC にコンテンツを送る。( PC←squid SSL )
 ・コンテンツの中に、ex2.html へのリンクがある
  ( 「<a href="http://example.com/ex2.html">リンク</a>」 のような )
 ・リンクをクリックする
 ・今度は http://example.com/ex2.html にアクセスする。( PC→squid 非SSL )
 …
という状態ではないですか? ということ。
この例でex2.htmlへのアクセスの場合、素のhttpで接続しようと判断したのは PC自身であって、さらにその原因はコンテンツに記されているURLです。squidでどうこうする問題ではありません。
※もし、「<a href="/ex2.html">〜」や「<a href="ex2.html">〜」のようになっていれば、PC は“https://example.com/ex2.html”と解釈して SSL通信をしていたでしょう。

上記のような状態なのかどうか確認しては? というのが、前回答の趣旨です。
で、もしそうなら、コンテンツの中身を調整した方が良いと思います。

コンテンツを弄るのが大変で、squid側だけで対処したいなら、
 (1)squidでコンテンツを変換する
  http://example.com となっている部分を全て https://example.com に替える
 (2)httpで通信が来たら、httpsでアクセスさせ直す
  302の応答コードと共に、アクセスさせたいURL( 今回は https://〜 ) を送ることで、https で再接続させる
という候補が考えられますが、(1)に関してそのような機能があるかどうかは知りません。(2)に関しては根本的な解決ではありませんが、一応。Squid FAQのリダイレクタ例が参考になると思います。

追記:
Squid FAQのリダイレクタ例って、フォワードプロキシの時のものではないかと気付きました。そのままではリバースプロキシに適用できないように思います。その分を差し引いてご覧下さい。失礼致しました。

[ メッセージ編集済み 編集者: angel 編集日時 2007-01-09 17:19 ]
kap
会議室デビュー日: 2007/01/08
投稿数: 5
投稿日時: 2007-01-10 02:22
大変ご丁寧なご回答ありがとうございます。

結論から言うとWebサーバ側の問題でした。
お騒がせしました。現状Webサーバ側のコンテンツがHttpに対しては
Httpで返答するような形になっているため、Webサーバ側のApacheを
Https対応して、
PC<--(https)-->SSLアクセラレータ<--(https)-->WEB
としようと考えております。

別途、できましたらまた報告します。

皆々様、ご支援ありがとうございます。
----------------------------------------------------------------------
自己完結レス

結局、上記形式ではできなかったため、別の方法を模索した結果
Poundを利用してSSLリバースプロキシ実現することができました。

ご助言いただきました皆様ありがとうございました。

以上、よろしくお願いいたします。


[ メッセージ編集済み 編集者: kap 編集日時 2007-01-29 20:55 ]
chamu
会議室デビュー日: 2007/07/19
投稿数: 1
投稿日時: 2007-07-19 01:11
Poundを利用してクライアント→Pound→Webサーバ(https)を解決した
とのことですが、差し支えなければ設定方法について、ご教授願います。
なお、バックエンドサーバの設定を443通信へ変更しただけでは
だめでした。。。

以上宜しくお願い致します。

スキルアップ/キャリアアップ(JOB@IT)