2006/07/20
このエピソードの続き。
2005/10/01 プロキシ・サーバと高機能アクセス解析CGI
このブログを運営しているサーバは、WAN→LANへの内向きのプロキシ・サーバの配下にある。
これは、WANからのアクセス要求に対して、様々な条件でLAN内にある複数のサーバに接続を振り分けるためなのだが、とても重宝している。
現在は、http のリクエストだけを振り分けるようにプロキシ・サーバを稼動させていたのだが、今日、どうしても https のリクエストを振り分ける必要が生じた。
これまで、「ちょっと難しそうだなぁ~」というだけの理由でSSLプロキシ・サーバの構築をやらずにいたのだが、いい機会なので、トライしてみた。
プロキシ・サーバは、DeleGate を使用しているのだが、マニュアルを読んでみると、プロキシ・サーバへの入力と、プロキシ・サーバからの出力に、sslway というフィルタを挿入すればいいとある。
おや、なんとなく難しいかと思っていたが、なんか意外に簡単そうだ。
とりあえず、マニュアルにある通り、フィルタのディレクトリにある Makefile を修正し、SSLライブラリを参照するようにしてコンパイルしてみる…。
うー、リンクでエラーが発生。
--
$ make -f Makefile.go sslway
:
## SSLEAY=/usr/local/ssl-0.9.8a/lib ---- the directory of SSLeay
## LIBSSL=/usr/local/ssl-0.9.8a/lib/libssl.a /usr/local/ssl-0.9.8a/lib/libcrypto.a ---- the SSLeay library
## specify proper SSLEAY and/or LIBSSL if the following failed.
cc -O -L../lib -o sslway sslway.o /usr/local/ssl-0.9.8a/lib/libssl.a /usr/local/ssl-0.9.8a/lib/libcrypto.a -lnsl ../lib/library.a ../lib/libsubst.a \
/usr/local/ssl-0.9.8a/lib/libssl.a /usr/local/ssl-0.9.8a/lib/libcrypto.a -lnsl
/usr/local/ssl-0.9.8a/lib/libcrypto.a(dso_dlfcn.o)(.text+0x37): In function `dlfcn_load':
: undefined reference to `dlopen'
/usr/local/ssl-0.9.8a/lib/libcrypto.a(dso_dlfcn.o)(.text+0x98): In function `dlfcn_load':
: undefined reference to `dlclose'
/usr/local/ssl-0.9.8a/lib/libcrypto.a(dso_dlfcn.o)(.text+0xc0): In function `dlfcn_load':
: undefined reference to `dlerror'
:
--
ん~?
エラーメッセージを見ると、dlopen、dlclose、dlerror などが未定義と言っている。
どうも、「dlうんちゃら」みたいなライブラリが足りないようだ。
「man dlopen」してみると…。
おぉ、コードとリンク・オプションの例があった。
gcc -rdynamic -o foo foo.c -ldl
なるほど、libdl.a を明示的にリンクする必要があって、そして、このライブラリは、RTLD_GLOBAL フラグが付いているのか。
Makefile を編集し直して、コンパイル。
成功!
オプションを指定して、DeleGate を起動してみる。
どれどれ。
https://sample.zunbe.com/proxy/
※オレオレSSLなので、警告が表示されます。
おしおし、バッチリだ。
■参考文献
| Linuxサーバ Hacks | | Apache ハンドブック 第3版 | | Apache セキュリティ | |
投稿者 zunbe : 2006/07/20 10:53:43
トラックバック
|
〔http://blog.zunbe.com/mt/mt-tb.cgi/422〕
|
|