|目次|手順 0|1|2|3|A|B|C|D|E|F|G|H| I |J|K|L|M|N|O|P|Q|
作成日:2009年03月01日、更新日:2009年03月01日 作成:鷹の巣リモートデスクトップ接続の設定例を示します。前編では、その準備段階として、OpenVPN を使用して、仮想プライベートネットワークを構築する為の証明書と鍵(錠前)を作成します。
CA(認証局)と証明書と鍵の作成方法については、OpenVPN-2.0.5 証明書を使う [FC4]に判りやすい説明がありました。このページでは、もっと簡単にかつWindows的?な作成方法を提示します。仮想プライベートネットワークについては、下記のサイトを事前にご一読されることをお奨めします。
尚、この設定例は、以下の環境で動作の確認を行いました。
設定の方針は、
目次
私は会社で、AUTOCADで作成されたデータのインデックスをWindows XPで作成し、全文検索システム( NAMAZU )を構築しています。Windows にも FastCopy というネット越しの同期(差分)高速コピーができるフリーソフトがあり、非常に助かりました。
必要に迫られて、VPN を構築した訳ではありませんが、大変興味深く面白い内容でした。会社が固定 IPアドレスなので、OpenVPN の構築は、予想以上に簡単でした。この面白さが伝えられたらと、Webページに書いた次第です。
上記の様な訳で、会社にあるWindows XP Professional のサーバー機を自宅からリモート操作して、楽をしようと考えています。Windows に標準インストールされているリモートデスクトップ接続は、素晴らしく、ファイルのコピーも簡単です。こういう便利なソフトには必ずセキュリティホールがあるという考えで、VPN とWindows ファイアウォールを設定することにしました。
尚、Windows XP HOME EDITION 等のサーバー機を自宅からリモート操作したい場合は、リモートデスクトップ接続が使用できません。これらの場合、UltraVNC ( UltraVNC 日本語版 | NANASI's Home Page )等を追加インストールし、Windows ファイアウォールを設定して下さい。(このページでは、解説していません。)
このページでは、下図に示すVPNの構成で、説明を行います。(会社のネットワーク管理者の許可を受ける必要があります。)遠隔地の会社にホスト名が www.example.com(208.77.188.166)の Windows XP Professional のサーバー機があり、鷹の巣の自宅(203.212.55.105)に Windows XP HOME EDITION のクライアント機があります。自宅から会社のサーバー機にリモートデスクトップ接続を行って、会社のサーバー機を管理者権限で操作することを想定しています。(VPNの環境が出来ていれば、その逆操作も可能です。)VPNを構築するため、会社に VPN サーバーを、自宅に VPN クライアントをインストールすることにします。

上図は、Network Notepad Homepage (フリーウェア、言語に日本語選択有)にて作成しました。有難うございました。紙上を借りてお礼を言わせて頂きます。独特な操作方法とよく落ちたので、4時間もかかりました。(荒々しい説明書は、 Network Notepad Homepage 日本語ページ にありました。)
OpenVPNを使用して、VPN(仮想プライベートネットワーク)を構築するには、VPN用サーバーが必要となります。VPN用サーバー機には、プライベートアドレスの10.8.0.1が割り付けられ、仮想DHCPサーバー機には、10.8.0.2が割り付けられています。クライアント機には、10.8.0.4以降が割り付けられる仕組みになっています。
同じLAN内にVPNサーバー機(192.168.0.11)とVPNクライアント機(192.168.0.21)を設置して、接続し、ネットワークアナライザのSqueezer Ver.2(フリーウェア)を使用して、パケットを捕捉した結果(DNSパケットは、後で消去)を見て下さい。OpenVPNのパケットは、全てUDPパケットですし、VPNサーバー機は、送受信共、UDP1194番ポートしか使用していません。VPNクライアント機は、UDP1024番以上のポートが使用されています。これらを踏まえて、ルータの設定を行う必要があります。(詳細は、項10で述べます。)
会社側のルータで、UDPポート1194番の全パケットをサーバー機(192.168.0.11)へ転送(ポートフォワード)できない場合は、基本的にあきらめる。会社のネットワーク管理者の許可を受けずに自宅側にVPNサーバー機を設置し、会社側をVPNクライアント機にすると、犯罪行為になります。
今回の設定では、VPNサーバー機とVPNクライアント機間のping(疎通)は通りますが、VPNクライアント機同士の疎通はありません。
まず、LAN内に2台のPCを準備して下さい。これは、確実にVPNのトンネルが掘れるかどうかを試験するためです。1台をVPNサーバー機とし、もう1台をVPNクライアント機とします。以下の作業は、証明書や鍵(錠前)を作成する Windows XP HOME EDITION (Professional) の VPN クライアント機での作業です。
OpenVPN Downloads より Windows Installer の openvpn-2.1_rc15-install.exe (2009年2月現在)をダウンロードして、ダブルクリックして、下記の順でインストールする。
「Next> 」-「I Agree」-「Next> 」(全コンポーネントをインストール)-「Install」(C:\Program Files\OpenVPN)-
「続行」(下図の TAP-Win32 Adapter V9 をインストール)-「Next> 」-「Finish」で、インストールが終わります。

注)TAP-Win32 Adapterは、仮想NIC(ネットワークインターフェィスカード)で、後述するVPN用の10.8.0.0/24のプライベートアドレスを使用可能にします。
上記のインストール作業で、仮想NICが1台追加されましたので、このNICの名前を「ローカル エリア接続2」より「OpenVPNローカル エリア接続」に変更しておきます。

インストールされた C:\Program Files\OpenVPN\bin のフォルダの openssl.exe と libssl32.dll と libeay32.dll は、古いので、書き換えます。OpenSSL のバイナリファイルを Shining Light Productions - Win32 OpenSSL より入手します。2009年2月現在は、Win32 OpenSSL v0.9.8j Light(1MB Installer) をダウンロードします。
ダウンロードしたファイルをダブルクリックして、インストールを行いますが、下図の画面が出た時は、キャンセルを押して中止し、Visual C++ 2008 ライブラリのランタイム コンポーネントを先にインストールします。2009年2月現在のダウンロード先は、 Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86) です。尚、既にインストールしているにもかかわらず、下図の画面が出る場合は、無視して「OK」をクリックします。
「OK」-「NEXT」-「I accept the agreement を選択して、NEXT」-「C:\OpenSSL でNEXT」-
「OpenSSL でNEXT」-「The OpenSSL binaries [/bin] directory を選択して、NEXT」(下図参照)-「Install」-「とりあえず、チェックを全て外して、Finish」でインストールが終わります。

C:\OpenSSL\binのフォルダの openssl.exe と libssl32.dll と libeay32.dll を C:\Program Files\OpenVPN\bin のフォルダへ上書きコピーします。(OpenSSL は、環境変数 OPENSSL_CONF に C:\OpenSSL\bin\openssl.cfg を設定して、設定ファイルを利用します。OpenVPN は、C:\Program Files\OpenVPN\easy-rsa\openssl.cnf の設定ファイルを利用します。)
以上で、VPN クライアント機のインストールは、完了しました。LAN内で、接続試験を行うためにもう1台、 Windows XP HOME Professional ( EDITION ) の VPN サーバー機を準備して下さい。VPN サーバー機に上記の b 項と c 項のインストールを行って下さい。(VPN サーバー機には、 d 項のOpenSSL のインストールを行なう必要は、ありませんが、C:\Program Files\OpenVPN\bin のフォルダの openssl.exe と libssl32.dll と libeay32.dll は、上書きコピーして下さい。)
コマンドプロンプト画面での作業が多くなるので、まずコマンドプロンプト画面の変更を行います。コマンドプロンプト画面の上部の表題バーで、下図の様に右クリックして、プロパティを左クリックし、コマンドプロンプトのプロパティを開けます。

下図の様に変更して、UNIX のワークステーション端末の様にします。(コマンドプロンプト画面で、コピーや貼り付けが出来る様になります。)

設定が終わったら、「OK」を押します。今後もこのコマンドプロンプト画面を使用し続けるので、「ショートカットへのプロパティの適用」画面で、「このウィンドウを起動したショートカットを変更する」を選択して、「OK」を押します。

証明書と鍵データの作成は、コマンドプロンプト画面での入力になり、同じデータを何度も入力しなればなりません。ここでは、入力データを事前に準備することにします。
鷹の巣が作成した OpenVPN-build-key-input.lzh をダウンロードして解凍し、C:\Program Files\OpenVPN\easy-rsa フォルダに設置します。内容は「大阪府箕面市」、VPN サーバーのネットワークセグメントが「 10.8.0.0/24」、VPN 管理者のメールアドレスが「 abuse@example.jp 」になっています。下図の赤囲み箇所を貴方の環境に合わせて変更して下さい。改行も意味をもっていますので、文字列だけを変更して下さい。フォルダにeasy-rsa という名称がついていますが、この作業は、no-miss-easy-easy-rsa にする作業だと考えて、辛抱して実施して下さい。

コマンドプロンプト画面より、証明書と鍵を作成します。クライアント用の証明書と鍵は、1つあれば、試験出来ますが、とりあえず3つ作成します。
画面では、水色がコマンド入力、緑色が得られた結果の注目すべき表示、赤色が注目すべき説明としています。
コマンドプロンプト画面より、上記のコマンド入力を行って、証明書と鍵を作成している内容を下記に示します。
画面では、水色がコマンド入力、緑色が得られた結果の注目すべき表示、赤色が注目すべき説明としています。
証明書と鍵の作成要領
C:\>cd \Program Files\OpenVPN\easy-rsa <----証明書と鍵の作成時の場所移動。 C:\Program Files\OpenVPN\easy-rsa>init-config <----インストール後の1回だけ、必ず実行する。 C:\Program Files\OpenVPN\easy-rsa>copy vars.bat.sample vars.bat 1 個のファイルをコピーしました。 C:\Program Files\OpenVPN\easy-rsa>copy openssl.cnf.sample openssl.cnf 1 個のファイルをコピーしました。 C:\Program Files\OpenVPN\easy-rsa>vars <----------環境変数の設定で、コマンドプロンプト画面で本作業をする前に必ず実行すること。 C:\Program Files\OpenVPN\easy-rsa>clean-all <------全証明書と鍵の消去。 1 個のファイルをコピーしました。 1 個のファイルをコピーしました。 C:\Program Files\OpenVPN\easy-rsa>build-ca <-------CA(認証局)の証明書と鍵の作成。 Loading 'screen' into random state - done Generating a 1024 bit RSA private key .................++++++ ...................................................++++++ writing new private key to 'keys\ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [JP]:JP <----------ここで、build-ca.input.txt の内容を全てコピーし、右クリックして張り付ける。 State or Province Name (full name) [OSAKA]:OSAKA Locality Name (eg, city) [MINOU]:MINO Organization Name (eg, company) [OpenVPN]:OpenVPN Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:OpenVPN-CA Email Address [abuse@example.jp]:abuse@example.jp C:\Program Files\OpenVPN\easy-rsa>build-key-server server <---サーバー証明書と鍵の作成。 Loading 'screen' into random state - done Generating a 1024 bit RSA private key .......................++++++ .........................++++++ writing new private key to 'keys\server.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [JP]:JP <----------ここで、build-key-server.input.txt の内容を全てコピーし、右クリックして張り付ける。 State or Province Name (full name) [OSAKA]:OSAKA Locality Name (eg, city) [MINOU]:MINO Organization Name (eg, company) [OpenVPN]:OpenVPN Organizational Unit Name (eg, section) []:10.8.0.0/24 Common Name (eg, your name or your server's hostname) []:server Email Address [abuse@example.jp]:abuse@example.jp Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from openssl.cnf Loading 'screen' into random state - done Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'JP' stateOrProvinceName :PRINTABLE:'OSAKA' localityName :PRINTABLE:'MINO' organizationName :PRINTABLE:'OpenVPN' organizationalUnitName:PRINTABLE:'10.8.0.0/24' commonName :PRINTABLE:'server' emailAddress :IA5STRING:'abuse@example.jp' Certificate is to be certified until Feb 22 09:29:51 2019 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated C:\Program Files\OpenVPN\easy-rsa>build-key client1 <---クライアント1証明書と鍵1の作成。 Loading 'screen' into random state - done Generating a 1024 bit RSA private key ...................................++++++ ...........++++++ writing new private key to 'keys\client1.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [JP]:JP <----------ここで、build-key clientA.input.txt の内容を全てコピーし、右クリックして張り付ける。 State or Province Name (full name) [OSAKA]:OSAKA Locality Name (eg, city) [MINOU]:MINO Organization Name (eg, company) [OpenVPN]:OpenVPN Organizational Unit Name (eg, section) []:10.8.0.0/24 Common Name (eg, your name or your server's hostname) []:OpenVPN-client1 <---ここで、1を入力して、エンターを押す。 Email Address [abuse@example.jp]:abuse@example.jp <---ここで、build-key clientB.input.txt の内容を全てコピーし、右クリックして張り付ける。 Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from openssl.cnf Loading 'screen' into random state - done Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'JP' stateOrProvinceName :PRINTABLE:'OSAKA' localityName :PRINTABLE:'MINO' organizationName :PRINTABLE:'OpenVPN' organizationalUnitName:PRINTABLE:'10.8.0.0/24' commonName :PRINTABLE:'OpenVPN-client1' emailAddress :IA5STRING:'abuse@example.jp' Certificate is to be certified until Feb 22 09:30:59 2019 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated C:\Program Files\OpenVPN\easy-rsa>build-key client2 <----------クライアント2証明書と鍵2の作成、F3キーを押して、client1を2にする。 ......................................... 以下、同様に必要数のclientを作成する ............................................. C:\Program Files\OpenVPN\easy-rsa>build-dh <----------OpenVPNサーバー用Diffie Hellmanパラメータの作成。 Loading 'screen' into random state - done Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time ......+.....................+..................................+..................... .............................................................+.................+..... ......................+................................................+..++*++*++* C:\Program Files\OpenVPN\easy-rsa>
注)画面では、水色がコマンド入力、緑色が得られた結果の注目すべき表示、赤色が注目すべき説明としております。
以上で、証明書と鍵が作成できました。
VPN サーバーに必要なファイル----ca.crt 、server.crt 、server.key 、dh1024.pem
VPN クライアントに必要なファイル---ca.crt 、client1.crt 、client1.key
今後、クライアントの証明書と鍵を追加作成する場合は、コマンドプロンプト画面を起動し、「 cd \Program Files\OpenVPN\easy-rsa 」と入力して、作業フォルダに移動後、「 vars 」と入力して、画面の環境変数を設定して下さい。
|| 次 頁 |