2009年08月18日

OpenVPN用のPKI環境構築

OpenVPNで公開鍵認証方式を使うための環境構築手順。
OpevVPN自体のインストールについては以前の記事を参照してください。

まずはインストール時に回収したeasy-rsaを適当なディレクトリ(ここでは /data とします)に展開してください。配下に重要なファイルが生成されるので、/tmpなど一時ディレクトリは避けてください。あと、セキュリティの観点からOpenVPNをインストールしたマシンとは別のマシンを使用することをお勧めします。
cd /data
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"

これで準備完了、まずは環境の初期化をします。
cd /data/easy-rsa
. 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

と表示されれば鍵と証明書の生成は完了です。

最後にクライアント用の証明書と鍵を作成します。
./build-key hogeuser

作業内容はサーバ用の場合と全く同じです。

生成された鍵やら証明書やらをサーバとクライアントに送ります。
必要なファイルは以下のとおりです。

<サーバ側>
 ca.crt
 dh1024.pem
 vpnserver.key
 vpnserver.crt
 ta.key

<クライアント側>
 ca.crt
 hogeuser.key
 hogeuser.crt
 ta.key

ここまで書くと設定についても記述が必要ですね…。
それはまた、次のエントリと言うことで。
posted by 月水和尚 (とも) at 17:09 | Comment(2) | TrackBack(0) | Linux(UNIX)全般