Windows XP に OpenVPN GUI をインストールし,VPN クライアントとしてサーバに接続する。
■ ■ ■
はじめに
Linux と Windows での OpenVPN の最終回 (nlog(n): Linux サーバと Windows クライアントで OpenVPN)。ここでは,Windows XP に OpenVPN GUI をインストールする (OpenVPN GUI for Windows)。私は英語版をインストールしたが,日本語版でもよさそうだ (OpenVPN GUI for Windows 日本語版 - OpenVPN 日本語情報サイト 《プラムシステムズ株式会社》)。
条件としては,すでに OpenVPN サーバが起動していること (nlog(n): Vine Linux 4.2 に OpenVPN サーバをインストール),サーバ上のプライベートCAで,クライアント用の秘密鍵を作成してあることである。秘密鍵の作成方法は ゼロ円でできるインターネットVPN(3/4) で解説されている。
インストールと設定
OpenVPN GUI for Windows パッケージをダウンロードし (OpenVPN GUI for Windows 日本語版),インストールする。
サーバで生成した証明書と鍵 (ca.crt, client.crt, client.key) を OpenVPN GUI for Windows のコンフィグレーションファイルディレクトリにコピーする。ディレクトリは「スタート」→「プログラム」→「OpenVPN」→「OpenVPN configuration file directory」で開くことができる。ディレクトリパスは,デフォルトで C:\Program Files\OpenVPN\config となっている。
設定ファイルのサンプル OpenVPN\sample-config\client.ovpn を OpenVPN\config\client.ovpn にコピーする。コピーした設定ファイルを編集し,サーバ証明書とクライアント鍵の名前を,ダウンロードしたファイル名に変更する。ファイルの最後に次の行を追加する。
pull
float
サーバへの接続

パスワードの問い合わせ
タスクトレイの OpenVPN GUI アイコンを右クリックし「Connect」を選択する。コンフィグレーションファイルディレクトリに複数の *.ovpn 設定ファイルがある場合は,「Connect」から選択肢が表示される。「Enter Password」と表示されるので,クライアント鍵生成時に設定したパスワードを入力する。タスクトレイにポップアップで「client is now connected.」と表示されれば成功である。
接続に失敗する場合
クライアント鍵に問題があり,サーバに接続できない場合を紹介する。接続に失敗したクライアントには次のメッセージが表示された。
Tue May 27 01:29:54 2008 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006
Tue May 27 01:29:54 2008 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Tue May 27 01:29:54 2008 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Tue May 27 01:29:54 2008 LZO compression initialized
Tue May 27 01:29:54 2008 Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
Tue May 27 01:29:54 2008 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
Tue May 27 01:29:54 2008 Local Options hash (VER=V4): '41690919'
Tue May 27 01:29:54 2008 Expected Remote Options hash (VER=V4): '530fdded'
Tue May 27 01:29:54 2008 UDPv4 link local: [undef]
Tue May 27 01:29:54 2008 UDPv4 link remote: 192.168.0.198:1194
Tue May 27 01:29:54 2008 TLS: Initial packet from 192.168.0.198:1194, sid=7859ba00 d8820ff5
Tue May 27 01:29:54 2008 VERIFY OK: depth=1, /C=JP/ST=someState/L=someLocality/O=someOganization_/CN=someOrganization__CA/emailAddress=user@domain
Tue May 27 01:29:54 2008 VERIFY OK: depth=0, /C=JP/ST=someState/L=someLocality/O=someOganization_/CN=server/emailAddress=user@domain
最後に「VERIFY OK」となっているが,接続できていない。それよりも最初の「WARNING: No server certificate verification method has been enabled.」の方が重要である。
サーバのログ openvpn.log には,次のように記録されていた。
Tue May 27 01:32:21 2008 MULTI: multi_create_instance called
Tue May 27 01:32:21 2008 192.168.0.101:3511 Re-using SSL/TLS context
Tue May 27 01:32:21 2008 192.168.0.101:3511 LZO compression initialized
Tue May 27 01:32:21 2008 192.168.0.101:3511 Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
Tue May 27 01:32:21 2008 192.168.0.101:3511 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
Tue May 27 01:32:21 2008 192.168.0.101:3511 Local Options hash (VER=V4): '530fdded'
Tue May 27 01:32:21 2008 192.168.0.101:3511 Expected Remote Options hash (VER=V4): '41690919'
Tue May 27 01:32:21 2008 192.168.0.101:3511 TLS: Initial packet from 192.168.0.101:3511, sid=17fd1649 30371579
Tue May 27 01:32:21 2008 192.168.0.101:3511 VERIFY ERROR: depth=0, error=unsupported certificate purpose: /C=JP/ST=someState/L=someLocality/O=someOrganization_/CN=client01/emailAddress=user@domain
Tue May 27 01:32:21 2008 192.168.0.101:3511 TLS_ERROR: BIO read tls_read_plaintext error: error:140890B2:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate returned
Tue May 27 01:32:21 2008 192.168.0.101:3511 TLS Error: TLS object -> incoming plaintext read error
Tue May 27 01:32:21 2008 192.168.0.101:3511 TLS Error: TLS handshake failed
Tue May 27 01:32:21 2008 192.168.0.101:3511 SIGUSR1[soft,tls-error] received, client-instance restarting
こちらは「VERIFY ERROR」である。
原因は,クライアント鍵の生成の方法を間違っていたからだった。「build-key-pass」とすべきところを「build-key-server」で生成していたのだ。
# ./build-key-server client01 ←間違い
# ./build-key-pass client01 ←正しい
「build-key-server」はサーバ鍵の生成に使うスクリプトである。
2009年5月27日追記:
Windows Vista に OpenVPN クライアントを導入する場合について書きました (nlog(n): Windows Vista で OpenVPN GUI)。
Posted by n at 2008-05-27 02:01 | Edit | Comments (0) | Trackback(0)