OpevVPN自体のインストールについては以前の記事を参照してください。
まずはインストール時に回収したeasy-rsaを適当なディレクトリ(ここでは /data とします)に展開してください。配下に重要なファイルが生成されるので、/tmpなど一時ディレクトリは避けてください。あと、セキュリティの観点からOpenVPNをインストールしたマシンとは別のマシンを使用することをお勧めします。
cd /data
tar xvf easy-rsa.tar
tar xvf easy-rsa.tar
続いて設定ファイルである vars を修正します(ファイルは展開されたeasy-rsaディレクトリの中にあります)。変更するのは以下の5行です。以下は記述例で、実際にはご自身の環境に合わせて内容を記述してください。
export KEY_COUNTRY=JP
export KEY_PROVINCE=Tokyo
export KEY_CITY=Shinjuku
export KEY_ORG="Hoge Corp."
export KEY_EMAIL="hogemaster@hogera.com"
export KEY_PROVINCE=Tokyo
export KEY_CITY=Shinjuku
export KEY_ORG="Hoge Corp."
export KEY_EMAIL="hogemaster@hogera.com"
これで準備完了、まずは環境の初期化をします。
cd /data/easy-rsa
. vars
./clean-all
. vars
./clean-all
そしたらマスタCA証明書と鍵を作成します。
./build-ca
入力値を求められた際に、以下の値はご自身の環境に合わせて入力してください。それ以外はデフォルト値のままEnterを押してしまって大丈夫です。(もちろんデフォルト値以外の値を設定しても大丈夫です)
Common Name (eg, your name or your server's hostname) []:Hoge-corp_CA
次にDH(Diffie Hellman)パラメータの作成をします。こちらはコマンド1つです。
./build-dh
続いてTLS証明鍵を作成します。
この作業だけはeasy-rsaを展開したサーバではなく、OpenVPNが導入されているサーバで実行する必要がありますのでご注意下さい。実行するコマンドは以下のとおりです。
openvpn --genkey --secret ta.key
生成された鍵(ta.key)はOpenVPNのconfigディレクトリに移動しておきます。またそのコピーをeasy-rsaを展開したサーバの /data/easy-rsa/keys 配下に保存しておいてください。(保管場所はどこでもいいんですが、keysディレクトリが一番分かりやすくていいと思います)
続いてサーバ側で使用する証明書と鍵の作成をします。
./build-key-server vpnserver
引数である vpnserver はサーバ名なので、ご自身の環境に合わせて適宜変更してください。鍵の生成時に聞かれる内容はマスタCAの時と一緒です。そのため必ず値を入れなければならない項目も一緒になります。
Common Name (eg, your name or your server's hostname) []:vpnserver
マスタCAの場合と違い、入力終了後にまず
A challenge password []:
とパスワードの入力が求められます。サーバで使用する鍵にパスワードをかけてしまうと運用が面倒なので、何も入力せずにEnterキーを押してください。次に
An optional company name []:
と表示されますがこれも何も入力せずにEnterでOKです。すると
Sign the certificate? [y/n]:
と証明書にサインしていいかどうか聞かれます。入力内容に間違いがなければ y を入力してEnterを押してください。最後に
1 out of 1 certificate requests certified, commit? [y/n]
とコミット確認が表示されるので、こちらも y を入力してEnterを押してください。
Write out database with 1 new entries
Data Base Updated
Data Base Updated
と表示されれば鍵と証明書の生成は完了です。
最後にクライアント用の証明書と鍵を作成します。
./build-key hogeuser
作業内容はサーバ用の場合と全く同じです。
生成された鍵やら証明書やらをサーバとクライアントに送ります。
必要なファイルは以下のとおりです。
<サーバ側>
ca.crt
dh1024.pem
vpnserver.key
vpnserver.crt
ta.key
<クライアント側>
ca.crt
hogeuser.key
hogeuser.crt
ta.key
ここまで書くと設定についても記述が必要ですね…。
それはまた、次のエントリと言うことで。