Article delegate-ja/139 of [1-251] on the server localhost:7119
  upper oldest olders older1 this newer1 newers latest
search
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]

Newsgroups: mail-lists.delegate-ja

[DeleGate-Ja] SVN (WebDAV) SSL リバースプロクシ構築時にはまった点
12 Jul 2008 10:53:48 GMT Shigeharu Kondo <ppiaabrv6-mxhgu44nrwxw.ml@delegate.org>
SYSTEM DESIGN CO., LTD.

近藤です。

 ブログではないので、ここに、この内容を書いて良いかわかりま
せんが、はまった点、問題点を書きます。


1. 目標
 LAN 内の HTTP サーバ、SVN (WevDAV) サーバを DeleGate を用
いて SSL リバースプロクシを行い、インタネートからアクセス出
来る様にする。

2. 環境
(1) DaleGate バージョン
 delegate 9.8.1
(2) OS
 CentOS 5.2 (Red Hat Enterprise Linux 互換フリー Linux)
(3) LAN 内のリバースプロクシ先
 HTTP サーバ (複数)、SVN (WevDAV) サーバ

3. 最終的な DeleGate の設定
STLS=fcl
-P443
SERVER=https
HTTPCONF=methods:*
MOUNT="/aaa/* http://aaa.lan.kaisya.co.jp/* direction=bif"
MOUNT="/bbb/* http://bbb.lan.kaisya.co.jp/* direction=bif"
MOUNT="/repos/* http://svn.lan.kaisya.co.jp/repos/*
direction=bif"
RELIABLE='*'
RELAY=no
REACHABLE="*.kaisya.co.jp"
LOGFILE=/var/log/delegate/ssl.log
PROTOLOG=''

4. はまった点
(1) libssl.so/libcrypto.so
 実行時に libssl、libcrypto をダイナミックリンク出来ないエ
ラーとなる。
 CentOS 5.2 の SSL は、現状下記で構成されている。
    /lib/libssl.so.6 -> libssl.so.0.9.8b
    /lib/libcrypto.so.6 -> libcrypto.so.0.9.8b
 DYLIB に絶対パスを設定してもなぜかうまくいかない。
 しかたなく、cp -p /lib/libssl.so.6 $DGROOT/lib/libssl.o
(libcrypto も)したら OK になった。
 (CentOS には、libssl.so がない。)

(2) SSL 証明書の入れ先
 色々調べて下記がやっとわかった。
 $DGROOT/lib/server-cert.pem
 $DGROOT/lib/server-key.pem
 接続先ごとに変えることも出来る様であるが。トライしていな
い。
 (自己証明なので、これでよしとした)

(3) NG, this executable is not signed
 しばらくたって、設定変更時などで DeleGate を再起動する
と、NG, this executable is not signed で立ち上がらない。
 再度 make すれば直る。
 これは、CentOS の問題かも。自動アップデート等で、何かが書
き換わったのかもしれない。
 再度サインできるかもしれないが、make も早いので、当面この
まま。(すこし不安)

(4) /repos の HTTP 認証後、パスが /bbb になってしまう
 bbb.lan.kaisya.co.jp と repos.lan.kaisya.co.jp が、バー
チャルホストで、同一 IP アドレスであった。
 佐藤さんから、aaa、bbb、repos に相互参照がなければ、MOUNT
に direction=bif オプションを付ければ、OK と教えてもらった。
 基本的にバーチャルホスト名だけで、MOUNT 先のマッチングを出
来るようにしたいとのことでした。

(5) ERROR: Unknown internal: PROPFIND
 SVN の 2 回目の PROPFIND メソッドで、パスなしのエラーがで
る。
 最初の PROFIND が返した XML に LAN 内のパスが記述されてい
るが、リバース時にそのまま通した為、返したパスを使用した、2
回目の PROFIND がパスなしになっていた。

 佐藤さんに URICONV=where:any を入れる様に教えてもらった
が、だめだった。
 SVN サーバが返す XML は、1 行に複数のタグを記述している
為、その中に書かれている <D:href> を DeleGate が認識出来ず
に、書き換わらない部分が残ったのが原因であった。

 うちの SVN サーバのパスは、必ず /repos/XXX なので、内部 /
repos を 外部 /repos に MOUNT させ、XML 内のパスを書き換えな
い様にしたら OK になった。(URICONV=where:any を外した)

 これに関しては、src/url.c を改良すれば、直りそう。

(6) SVN のコミットがエラー
 SVN のコミット時の MKACTIVITY メソッドが許可されていなかっ
たのが原因。とりあえず HTTPCONF:method:* を追加したら OK。

(7) 不正使用対策
  佐藤さんから下記を入れるよう教えてもらった。
    RELAY=no    ## プロキシとしての使用を拒否する
    REACHABLE="*.kaisya.co.jp"  ## アクセス先を制限


以上


  admin search upper oldest olders older1 this newer1 newers latest
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
@_@V