2月
03
2010

OpenVPN導入1@Ubuntu 9.10

出先や実家から自宅のネットワークにアクセスするためにVPNを導入しています

PPTPは論外として,自宅鯖移行のついでにiPhone/iPod TouchがサポートしているL2TP over IPsecも考えたのですが,プロトコルの仕様が少し曖昧なせいかプラットフォームによっては安定しないそうなので(実際安定しなかった),OpenVPNにしました

以下,作業ログです

インストール

% sudo aptitude install openvpn

サーバとクライアントの確認に証明書を使いますが,貧乏なのでオレオレ証明書です

OpenVPNには認証局や証明書を作成するためのeasy-rsaという便利なスクリプトがついています

% cd /usr/share/doc/openvpn/examples/easy-rsa/2.0

まず,オレオレ認証局 (CA) を作ります
sourceコマンドを使用する箇所があるので,rootでシェルを起動しましょう

% sudo -s

varsを適宜書き換えます
KEY_SIZEは2048bit以上にすることを強くオススメします
オレオレなので他は何でもOKです

# vi vars
export KEY_SIZE=2048
export KEY_COUNTRY="国"
export KEY_PROVINCE="州"
export KEY_CITY="都市"
export KEY_ORG="組織"
export KEY_EMAIL="メアド"

作業に必要な環境変数を設定して,スクリプトを実行します

# . ./vars
# ./clean-all
# ./build-ca

いくつか質問されるので答えましょう
基本Enter連打でOKです

続いて,サーバの秘密鍵と証明書を作ります

# ./build-key-server サーバ名

いくつか質問されるので答えましょう
基本Enter連打でOKですが,チャレンジパスワードを聞かれます

さらに,クライアントの秘密鍵と証明書を作ります

一般的には,クライアントが自分で鍵と証明書要求CSRを作って,認証局が署名して返します
具体的には,クライアントがbuild-reqやbuild-req-passスクリプト(パスフレーズで保護された証明書を作成)で生成したCSRに,CAがsign-reqスクリプトで署名します

今回は自分以外に使用者がいないので,認証局上で直接クライアントの鍵を作ってしまいます

# ./build-key クライアント名

いくつか質問されるので答えましょう
基本Enter連打でOKですが,チャレンジパスワードを聞かれます

最後に,DiffieHellmanパラメータを生成します

# ./build-dh

秘密鍵とDHパラメータは管理者以外が読めないようにしておきましょう

# chmod 600 keys/*.key
# chmod 600 keys/dh2048.pem

直接生成したファイルを参照しても構いませんが,「/etc/openvpn」以下に必要なファイルを置きましょう
自分はkeysというディレクトリを作成して,その中にまとめてあります

# mkdir /etc/openvpn/keys
# cp keys/CA証明書 /etc/openvpn/keys/
# cp keys/サーバ証明書 /etc/openvpn/keys/
# cp keys/サーバ秘密鍵 /etc/openvpn/keys/
# cp keys/DHパラメータ /etc/openvpn/keys/

クライアントにCAの証明書と秘密鍵を渡します
秘密鍵の受け渡しは安全な方法で

TLS-AUTHの共通鍵も生成しておきます
念のためアクセス権が600になっているか確認しましょう

# openvpn --genkey --secret /etc/openvpn/keys/ta.key

次回につづく

Written by h2 in: PC | タグ:

コメントはまだありません »

RSS feed for comments on this post. TrackBack URL

コメントをどうぞ

TheBuckmaker WordPress Themes Webhosting, MP3, AAC & Co