- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!概要
DeleGateでクライアント認証付きSSLリバースプロキシサーバ、いわゆるSSL-VPNの一種を構築してみます。
クライアント認証にはSSLクライアント証明書を使います。クライアント証明書をまともに運用しようとするとCRL(証明書失効リスト)を使わないといけません。
DeleGateはCRLを読み込めるのですがかなりハマりやすい手順なのでメモしておきます。
!!!秘密鍵・証明書・CRL
OpenSSLで以下のファイルを作成します。作り方は検索すればすぐに見つかるのでここで書くこともないでしょう。これらのファイルを /var/spool/delegate-nobody/lib に置きます。
*server-key.pem: サーバの秘密鍵
*server-cert.pem: サーバ証明書
*cacert.pem: CAのルート証明書
*crl.pem: CRL
ここからがハマりポイントです。サーバの秘密鍵、サーバ証明書、CAのルート証明書はsslwayのオプションで指定できるのですがCRLのファイル名を指定する設定項目はありません。
CRLを読み込ませるには以下のようにハッシュ値をファイル名としたシンボリックリンクを作成しておきます。拡張子も忘れずに付けてください。
ln -s cacert.pem `openssl x509 -in cacert.pem -hash -noout`.0
ln -s crl.pem `oepnssl crl -in crl.pem -hash -noout`.r0
!!!DeleGateの設定
DeleGateをSSLリバースプロキシとして構築し、クライアントとDeleGate間の通信はHTTPSで行い、DeleGateとwebserverは素のHTTPで接続する構成を考えます。
delegeted -P443 \
SERVER=https \
STLS='fcl,im20,sslway -key server-key.pem -cert server-cert.pem \
-CApath /var/spool/delegate-nobody/lib -Vrfy -crl_check' \
MOUNT='/* http://webserver/*' \
PERMIT='http:{webserver:80}:*'
-Vrfyはクライアント証明書の提示・認証を強制するオプションで、-crl_checkはCRLを読み込むオプションです。-crl_checkはマニュアルのどこを見ても書いてありませんので注意。