SslVpn
をテンプレートにして作成
Start:
*DeleGateプロキシサーバ上のsslwayフィルタを用いたSSL-VPN...
RIGHT:川俣吉広, kaw@on.rim.or.jp~
RIGHT:2003年 12月 20日
現在、VPN (Virtual Private Network) の実現方法として、
SSL-VPNという手法が脚光を浴びている。
これは文字通り、ウェブブラウザに組み込まれたSSL (Secure S...
認証と暗号化の機能を利用することにより、簡易にVPNを構築す...
SSL-VPNを実現するためには、市販されている専用のハードウェ...
あるが、フリーソフトウェアを活用することにより、はるかに...
実現することも可能である。
本手順書では、そのような手法としてOpenSSLとDeleGateを利用...
構築手順を紹介する。
----
目次
#contents
**SIZE(10){おことわり} [#j4c60ac4]
SIZE(10){このページで解説する内容は、川俣吉広が独自に調査...
**必要なソフトウェアとその構成
今回の構築には、以下のソフトウェアが必要となる。
-[[OpenSSL:http://www.openssl.org/]] ... CA (Certificate ...
-[[DeleGate:http://www.delegate.org/]] ... リバースプロキ...
(internet) FireWall ...
||
+-------------+ HTTPS ______||________ HTTP +-----...
| Web Browser | <======>[[sslway] DeleGate]<=====>| Web ...
|(client cert)| [ (server cert) ] +-----...
+-------------+ ~~~~~~~||~~~~~~~~
User ||
~
OpenSSL
+----+
| CA | -----> (client cert)
| | -----> (server cert)
+----+
本手法の構成概念図を上図に示す。
インターネットとLANはファイウォールで隔てられ、直接通信す...
インターネット上のユーザがウェブブラウザを使用して、LAN内...
アクセスできるようにするため、ファイアウォール上に「リバ...
構築し、内部への通信はこのプロキシを経由するようにする。
さらに、この通信が許可されたユーザと正しいプロキシサーバ...
ようにするため、
+クライアントとプロキシサーバ間の通信はHTTPSプロトコルを...
+更にプロキシ内に「サーバ証明書」、クライアント内には「ク...
+前項のサーバ証明書、およびクライアント証明書は独自に構築...
**構築手順 [#b71a3bf7]
***CAの構築と証明書の発行 [#vc1706cb]
OpenSSLはあらかじめインストールされていると仮定する。
勿論インストールされていない場合は、ソース、あるいはバイ...
入手し、インストールする((OpenSSLはセキュリティ問題がかな...
OpenSSLの設定ファイル(openssl.cnf)を設定する。~
openssl.cnfの設定例 → http://www.yggdrasil.jp/ygg16_1.html
CA構築に必要なディレクトリを作成する。
# mkdir -p /etc/CA /etc/CA/certs /etc/CA/crl /etc/CA/new...
# touch /etc/CA/index.txt
# echo "01" > /etc/CA/serial
# mkdir /etc/CA/private
# chmod 700 /etc/CA/private
上記のディレクトリ作成パスは一例である。
CAの秘密鍵を作成する。
# cd /etc/CA
# openssl genrsa -rand /var/log/maillog -out ca.key 1024
オプション-randで指定するファイルはランダムなエントロピの...
CA秘密鍵からCSR(CA証明書発行要求)を生成する。
# openssl req -new -key ca.key -out ca.csr
この後、発行に必要な事項の入力を求められるので、適宜入力...
次に、CSRを元にCA証明書への自己署名と発行を行う。
# openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt
これまでの手順で、以下のファイルが生成された。
|CENTER:ファイル|CENTER:説明 |CENTER:保管...
|ca.key |CAの秘密鍵 |/etc/CA/pri...
|ca.csr |CAのx509証明書発行要求(CSR) |証明書発行...
|ca.crt |CAの証明書(base64エンコード)|配布用、オ...
***リバースプロキシの立ち上げとSSL通信路の確立 [#kebd8145]
前項のCA構築の手順と同様、サーバの秘密鍵を生成する。
# openssl genrsa -out server.key 1024
サーバ証明書発行要求(CSR)を生成する。
# openssl req -new -key server.key -out server.csr
この後、必要事項の入力を要求されるので、入力する。
前述のCSRを元に、サーバ証明書の発行とCAによる署名を行う。
# openssl ca -out server-ca.crt -infiles server.csr
サーバ秘密鍵server.keyとサーバ証明書server.crtが認証つきS...
必要となる。
次に、リバースプロキシを実現するプログラムDeleGateを作成...
# tar xvzf delegateX.Y.Z.tar.gz ... (X.Y.ZはDele...
# cd delegateX.Y.Z
# CFLAGS=-O2 ADMIN=admuser@foo.bar.jp make
# install -m 0755 -s src/delegated /usr/local/sbin
DeleGateを実行する専用のユーザdelegate, グループdelegate...
# addgroup delegate ... (OSに依存する)
# adduser delegate ... (OSに依存する)
DeleGateが動作するための一時ファイルやログなどが置かれる...
# mkdir /var/spool/delegate
# chown delegate /var/spool/delegate
# chgrp delegate /var/spool/delegate
# chmod 0750 /var/spool/delegate
sslwayを作成し、インストールする。
# cd delegateX.Y.Z/filters
# make sslway
# make /var/spool/delegate/lib
# install -m 0755 -s sslway /var/spool/delegate/lib
sslwayの読み込み位置にCA証明書、サーバ秘密鍵、サーバ証明...
# cd /etc/ca
# cp ca.crt /var/spool/delegate/lib/ca-cert.pem
# cp server.key /var/spool/delegate/lib/server-key.pem
# cp server.crt /var/spool/delegate/lib/server-cert.pem
DeleGateは、設定ファイルを持たず、動作指定は起動時にコマ...
以下にラッパーの例を示す。
#!/bin/sh
# rc.delegate --- rc file for DeleGate proxy server
function dgcmd {
/usr/local/sbin/delegated \
DGROOT=/var/spool/delegate \
OWNER=delegate/delegate \
"$@"
}
case X"$1" in
Xstart)
dgcmd \
-P443 \
SERVER=https MOUNT="/* http://internal-host/*" \
FCL='sslway -Vrfy -CAfile ca-cert.pem'
;;
Xstop)
dgcmd -Fkill ;;
*)
echo "$0 start|stop" >&2 ;;
esac
-シェル関数dgcmdを定義し、その中で起動に必須なパラメータ...
-クライアントとの間にsslwayを双方向フィルタとして挟み込む...
-MOUNTオプションによりサーバのURL変換を行う。インターネッ...
以上でリバースプロキシの設定は完了。起動は以下のように行...
/usr/local/sbin/rc.delegate start
***クライアント証明書のウェブブラウザへの設定 [#z2d629cd]
クライアントのブラウザに読み込ませるためのクライアント証...
作成手順は、サーバ証明書と同様。
# openssl genrsa -out client.key 1024
# openssl req -new -key client.key -out client.csr
# openssl ca -out client-ca.crt -infiles client.csr
次に、今の手順で作成したクライアントの秘密鍵とクライアン...
# cat client.key client-ca.crt ca.crt | openssl pkcs12 -...
-out client.p12 -name "client key"
生成されたclient.p12ファイルをFD経由などでブラウザに転送...
***セキュリティ面の再点検 [#p9c0d064]
-不要なポートを閉じる
-パケットフィルタの設定
-DeleGateによるアクセス制御
**参考リンク [#m901873b]
-DeleGate
--DeleGate ... http://www.delegate.org/
-SSL
--OpenSSL ... http://www.openssl.org/
--OpenSSLでPKI ... http://www.yggdrasil.jp/ygg16.html
----
RIGHT:川俣吉広, kaw@on.rim.or.jp~
RIGHT:2002年 12月 20日
End:
*DeleGateプロキシサーバ上のsslwayフィルタを用いたSSL-VPN...
RIGHT:川俣吉広, kaw@on.rim.or.jp~
RIGHT:2003年 12月 20日
現在、VPN (Virtual Private Network) の実現方法として、
SSL-VPNという手法が脚光を浴びている。
これは文字通り、ウェブブラウザに組み込まれたSSL (Secure S...
認証と暗号化の機能を利用することにより、簡易にVPNを構築す...
SSL-VPNを実現するためには、市販されている専用のハードウェ...
あるが、フリーソフトウェアを活用することにより、はるかに...
実現することも可能である。
本手順書では、そのような手法としてOpenSSLとDeleGateを利用...
構築手順を紹介する。
----
目次
#contents
**SIZE(10){おことわり} [#j4c60ac4]
SIZE(10){このページで解説する内容は、川俣吉広が独自に調査...
**必要なソフトウェアとその構成
今回の構築には、以下のソフトウェアが必要となる。
-[[OpenSSL:http://www.openssl.org/]] ... CA (Certificate ...
-[[DeleGate:http://www.delegate.org/]] ... リバースプロキ...
(internet) FireWall ...
||
+-------------+ HTTPS ______||________ HTTP +-----...
| Web Browser | <======>[[sslway] DeleGate]<=====>| Web ...
|(client cert)| [ (server cert) ] +-----...
+-------------+ ~~~~~~~||~~~~~~~~
User ||
~
OpenSSL
+----+
| CA | -----> (client cert)
| | -----> (server cert)
+----+
本手法の構成概念図を上図に示す。
インターネットとLANはファイウォールで隔てられ、直接通信す...
インターネット上のユーザがウェブブラウザを使用して、LAN内...
アクセスできるようにするため、ファイアウォール上に「リバ...
構築し、内部への通信はこのプロキシを経由するようにする。
さらに、この通信が許可されたユーザと正しいプロキシサーバ...
ようにするため、
+クライアントとプロキシサーバ間の通信はHTTPSプロトコルを...
+更にプロキシ内に「サーバ証明書」、クライアント内には「ク...
+前項のサーバ証明書、およびクライアント証明書は独自に構築...
**構築手順 [#b71a3bf7]
***CAの構築と証明書の発行 [#vc1706cb]
OpenSSLはあらかじめインストールされていると仮定する。
勿論インストールされていない場合は、ソース、あるいはバイ...
入手し、インストールする((OpenSSLはセキュリティ問題がかな...
OpenSSLの設定ファイル(openssl.cnf)を設定する。~
openssl.cnfの設定例 → http://www.yggdrasil.jp/ygg16_1.html
CA構築に必要なディレクトリを作成する。
# mkdir -p /etc/CA /etc/CA/certs /etc/CA/crl /etc/CA/new...
# touch /etc/CA/index.txt
# echo "01" > /etc/CA/serial
# mkdir /etc/CA/private
# chmod 700 /etc/CA/private
上記のディレクトリ作成パスは一例である。
CAの秘密鍵を作成する。
# cd /etc/CA
# openssl genrsa -rand /var/log/maillog -out ca.key 1024
オプション-randで指定するファイルはランダムなエントロピの...
CA秘密鍵からCSR(CA証明書発行要求)を生成する。
# openssl req -new -key ca.key -out ca.csr
この後、発行に必要な事項の入力を求められるので、適宜入力...
次に、CSRを元にCA証明書への自己署名と発行を行う。
# openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt
これまでの手順で、以下のファイルが生成された。
|CENTER:ファイル|CENTER:説明 |CENTER:保管...
|ca.key |CAの秘密鍵 |/etc/CA/pri...
|ca.csr |CAのx509証明書発行要求(CSR) |証明書発行...
|ca.crt |CAの証明書(base64エンコード)|配布用、オ...
***リバースプロキシの立ち上げとSSL通信路の確立 [#kebd8145]
前項のCA構築の手順と同様、サーバの秘密鍵を生成する。
# openssl genrsa -out server.key 1024
サーバ証明書発行要求(CSR)を生成する。
# openssl req -new -key server.key -out server.csr
この後、必要事項の入力を要求されるので、入力する。
前述のCSRを元に、サーバ証明書の発行とCAによる署名を行う。
# openssl ca -out server-ca.crt -infiles server.csr
サーバ秘密鍵server.keyとサーバ証明書server.crtが認証つきS...
必要となる。
次に、リバースプロキシを実現するプログラムDeleGateを作成...
# tar xvzf delegateX.Y.Z.tar.gz ... (X.Y.ZはDele...
# cd delegateX.Y.Z
# CFLAGS=-O2 ADMIN=admuser@foo.bar.jp make
# install -m 0755 -s src/delegated /usr/local/sbin
DeleGateを実行する専用のユーザdelegate, グループdelegate...
# addgroup delegate ... (OSに依存する)
# adduser delegate ... (OSに依存する)
DeleGateが動作するための一時ファイルやログなどが置かれる...
# mkdir /var/spool/delegate
# chown delegate /var/spool/delegate
# chgrp delegate /var/spool/delegate
# chmod 0750 /var/spool/delegate
sslwayを作成し、インストールする。
# cd delegateX.Y.Z/filters
# make sslway
# make /var/spool/delegate/lib
# install -m 0755 -s sslway /var/spool/delegate/lib
sslwayの読み込み位置にCA証明書、サーバ秘密鍵、サーバ証明...
# cd /etc/ca
# cp ca.crt /var/spool/delegate/lib/ca-cert.pem
# cp server.key /var/spool/delegate/lib/server-key.pem
# cp server.crt /var/spool/delegate/lib/server-cert.pem
DeleGateは、設定ファイルを持たず、動作指定は起動時にコマ...
以下にラッパーの例を示す。
#!/bin/sh
# rc.delegate --- rc file for DeleGate proxy server
function dgcmd {
/usr/local/sbin/delegated \
DGROOT=/var/spool/delegate \
OWNER=delegate/delegate \
"$@"
}
case X"$1" in
Xstart)
dgcmd \
-P443 \
SERVER=https MOUNT="/* http://internal-host/*" \
FCL='sslway -Vrfy -CAfile ca-cert.pem'
;;
Xstop)
dgcmd -Fkill ;;
*)
echo "$0 start|stop" >&2 ;;
esac
-シェル関数dgcmdを定義し、その中で起動に必須なパラメータ...
-クライアントとの間にsslwayを双方向フィルタとして挟み込む...
-MOUNTオプションによりサーバのURL変換を行う。インターネッ...
以上でリバースプロキシの設定は完了。起動は以下のように行...
/usr/local/sbin/rc.delegate start
***クライアント証明書のウェブブラウザへの設定 [#z2d629cd]
クライアントのブラウザに読み込ませるためのクライアント証...
作成手順は、サーバ証明書と同様。
# openssl genrsa -out client.key 1024
# openssl req -new -key client.key -out client.csr
# openssl ca -out client-ca.crt -infiles client.csr
次に、今の手順で作成したクライアントの秘密鍵とクライアン...
# cat client.key client-ca.crt ca.crt | openssl pkcs12 -...
-out client.p12 -name "client key"
生成されたclient.p12ファイルをFD経由などでブラウザに転送...
***セキュリティ面の再点検 [#p9c0d064]
-不要なポートを閉じる
-パケットフィルタの設定
-DeleGateによるアクセス制御
**参考リンク [#m901873b]
-DeleGate
--DeleGate ... http://www.delegate.org/
-SSL
--OpenSSL ... http://www.openssl.org/
--OpenSSLでPKI ... http://www.yggdrasil.jp/ygg16.html
----
RIGHT:川俣吉広, kaw@on.rim.or.jp~
RIGHT:2002年 12月 20日
Page: