Apr 14, 2012

delegateと、sslクライアント証明書で、アクセス制御

SSLクライアント証明書を持っているクライアントだけを、既設Webサーバに delegatedでアクセス許可する設定のメモ。書きかけ。

■用意すべき鍵/証明書

 * server-key.pem: サーバの秘密鍵。sslwayのオプションで指定
 * server-cert.pem: サーバ証明書。sslwayのオプションで指定
 * cacert.pem: CAのルート証明書。sslwayのオプションで指定
   ハッシュ値をファイル名としたシンボリックリンクを作成

   # ln -s cacert.pem `openssl x509 -in cacert.pem -hash -noout`.0
 * crl.pem: CRL = Certificate Revocation List

   ハッシュ値をファイル名としたシンボリックリンクを作成
   # 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}:*'


      <2015.02.26 追記>
    DOS(Windows)だと 
   cd d:\dgroot\bin
   delegated.exe -P443 -vl -f SERVER=https STLS='fcl,sslway -tls1'
    MOUNT='/* http://1.2.3.4/*' PERMIT="*:*:*" DGROOT=d:\dgroot
   ADMIN=admin@example.com

</2015.02.26 追記>

■オプションの解説
 -Vrfy : クライアント証明書の提示・認証を強制するオプション
 -crl_check : CRLを読み込むオプション。
 -tls1 : tls1を明示するオプション。                                         <--- 2015.02.26

■証明書の配布
 ・Androidへの証明書インストール手順、メモ
 ・クライアント証明書をiPhoneにインポートする手順、メモ

■参考にしたところ
 DeleGate HTTPS Reverse Proxy (shakemid.com 2007/11/23)
 Delegate + OpenSSL による SSL対応リバースプロキシの構築 (murashima.net 2003/03/28)
 DeleGate HTTPS Reverse Proxy_bak_20070518 (shakemid.com 2007/05/18)
 DeleGateでクライアント認証付きSSLリバースプロキシサーバ、いわゆるSSL-VPNの一種を構築してみます(shakemid.com)

No comments: