In message <_A513@delegate-ja.ML_> on 12/15/10(09:23:07) you Shigeharu Kondo <ppiaabrv6-yaw3rpfngj2z.ml@ml.delegate.org> wrote: | 近藤です。回答ありがとうございました。 | 早速やってみたのですが、小吉でした。 ... |> | 特定の SSL URL を、社内 LAN の SSL サーバへリバースプロクシ (MOUNT) |> |したいと思い、実験しましたが、ブラウザからみて応答が返ってこない状況で |> |す。(ie が回ったまま) |> | SSL - リバース - SSL です。 |> | |> |■ 気になる点 |> |(1) DeleGate の設定が間違っているか? |> ... |> |■ DeleGate の設定 |> |-P443 |> |SERVER=https |> |STLS=fcl |> |MOUNT="/XXX/* https://192.168.99.99/* nvserv=server1..." |> |> STLS=fsv:https |> |> (HTTPSサーバに対してはSSLを適用する、の意)というのを加えると吉 |> ではないかと思います。 | |STLS=fcl,fsv:https ... | 上記に変更すると、https 出来ました。 | ただ、LAN の https サーバからのレスポンスに埋め込まれた (href, action) |https://... が、書き換わりません。(LAN 内のアドレスのまま) | http://... は、書き換わっています。 | | まだ、なにか、設定が不足していますでしょうか? 自分用の備忘録兼用に書きますので、説明が長くなってしまいますが、 要するに以下の★のように回避、あるいは、修正することができます。 まず、DeleGateのMOUNTは以下のように指定しますね。 MOUNT="vURL rURL mountOptions" ここで、mountOptions はオプショナルです。 このようなMOUNTによって、HTTP(またはHTTPS)の要求や応答に含まれる URLの書き換えが行われます。 応答メッセージに対する書き換えの対象となるURLは、応答中のヘッダ (Location)やボディ(HTMLであればhrefやactionやsrc)に含まれるURLです。 応答中のURLへの書き換えが行われる条件は、そのURLがMOUNTの右辺の rURLにパターン的にマッチすることであり、マッチした場合には、左辺の vURLに書き換えられます。 rURLのマッチングにおいて、mountOption として nvserv が指定されて いた場合には、rURL (https://server/path のように指定される) の サーバ部分ではなく、nvserv=a.b.c のように指定されているホスト名 によってマッチングを行います。つまり、 MOUNT="/xxx/* https://x.x.x.x/* nvserv=a.b.c" の場合、応答中の URL が例えば https://a.b.c/def というようなもので あった場合、nvserv=a.b.c によりマッチングに成功し、 左辺により https://DeleGate/xxx/def に書き換えられます。 さて、問題はこの nvserv と、書き換え候補のURLのマッチングにあり ました。nvserv=a.b.c という指定は実装上 nvserv=a.b.c[:port] の 省略形になっています。このようにポート指定を省略した場合、2つの 解釈を行うことができます。ひとつは「任意のポートのサーバにマッチ する」ことで、もうひとつは「対象サーバのポート番号がプロトコルの 標準のポート番号であった場合にマッチする」というものです。 DeleGate/9.8.2 でこの nvserv を実装した際に、このどちらにすべきか 迷ったような記憶もあります。結局後者よりの解釈にしたようです。 というか、これはサーバに送る仮想ホスト名(Hostフィールド)の生成 にも使われるので、当然そうなるということなんでしょうね。 ところが、その際の実装が、 http://a.b.c:80 の場合にはマッチするけど、 https://a.b.c:443 の場合にはマッチしない、ようになっていました。 ★ということで、9.9.8-pre19 では、同封のパッチのように修正します。 ★なお、このパッチ無しで、以下のようにサーバのポート番号を明示する ことで回避することもできます。 MOUNT="/xxx/* https://x.x.x.x/* nvserv=a.b.c:443" なお「http://...は書き換わって」いるというのは不思議です。 前出のMOUNTでは、https 以外は書き換えないはずだからです。 9 9 ┌─┐┬┌──┬┐ //\^^ ( e ); {Do the more with the less -- B. Fuller} ├─┤│└─┐│ / 877m\_< >_ <URL:http://www.delegate.org/delegate/> ┴ └┴──┘┴────────────────────────────── 佐藤豊@情報技術研究部門.産総研 (IEEE-CSDP, ITIL-v3-F, OCUP-A, Security+) *** dist/src/delegate9.9.8-pre18/src/mount.c Thu Sep 30 15:04:32 2010 --- new/mount.c Mon Dec 27 01:17:13 2010 *************** *** 2789,2794 **** --- 2789,2795 ---- /* nvserv=host */ if( pp = strheadstrX(vserv,host,1) ){ if( *pp == 0 && iport == 80 + || *pp == 0 && iport == 443 || *pp == ':' && iport == atoi(pp+1) ){ goto PATHMATCH;