OpenVPNは、SSLVPNを実現するソフトウェアです。
具体的に、うちが実現している環境は、以下の通りです。
まずは、サーバ側に OpenVPN をインストールします。
# apt-get install openvpn
インストールを終えたら、VPN に必要な証明書や鍵の用意を行います。この作業は、openvpn に添付されているスクリプトを使うと、便利です。"easy-rsa" というディレクトリがあるので、それを "/etc/openvpn" などへコピーしてください。もし、見つからない場合は、locate コマンドなどで探してみてください。
続いて、鍵の生成を行ないます。"easy-rsa" ディレクトリへ移動します。
cd /etc/openvpn/easy-rsa
vars ファイルを開いて、KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL の値を入れてください。いずれの項目も空欄にしないように注意してください。
# . ./vars NOTE: when you run ./clean-all...
vars を実行して、環境変数の設定を行ないます。"NOTE:" とメッセージを出力しますが、これは正常です。
# ./clean-all
keys ディレクトリが生成されます。
# ./build-ca
このスクリプトは対話式で、認証局の証明書と鍵を生成します。ほとんどの項目にデフォルト値が入っていますが、CommonName は手動で入れる必要があります。
続いて、サーバの証明書と鍵を生成します。
# ./build-key-server server
基本的に、./build-ca と同じ流れで進みますが、最後に2回質問があるので、そこはきちんと [Y] を入力して、Return してください。何も入力しないで Return すると、作成に失敗します。
Sign the certificate? [y/n] 1 out of 1 certificate requests certified, commit? [y/n]
続いて、クライアントの証明書と鍵を作成します。複数のクライアントが必要な場合は、"client2", "client3" というように、適宜増やしてください。
# ./build-key client1
次に、鍵共有のための DH の設定を行ないます。
# ./build-dh
少し時間がかかります。うちの環境では、2分程度でした。