OpenVPN のインストール(ca証明書)

・CA認証局の構築

# cd /usr/local/src/openvpn-*
# cp -r easy-rsa /etc/openvpn/easy-rsa

・/etc/openvpn/easy-rsaにあるvarsファイルを編集

# vim /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY=JP                ←国名
export KEY_PROVINCE=Osaka          ←県名
export KEY_CITY=Mino             ←市町村名
export KEY_ORG="Home"            ←団体名
export KEY_EMAIL="test@mail.home.co.jp" ←メールアドレス

・varsファイルを実行,CA証明書およびCA秘密鍵を作成

# cd /etc/openvpn/easy-rsa/
# ./clean-all
# . ./vars
# ./build-ca
Country Name (2 letter code) [JP]: 「Enter」
State or Province Name (full name) [Osaka]: 「Enter」
Locality Name (eg, city) [Kyobashi]: 「Enter」
Organization Name (eg, company) [itboost]: 「Enter」
Organizational Unit Name (eg, section) : 「Enter」
Common Name (eg, your name or your server's hostname) :ovpn   ←ここのみ入力
Email Address [test@mail.itboost.co.jp]: 「Enter」

入力終了後,/etc/openvpn/easy-rsa/keysに以下のファイルが作成される.
ca.crt…CA証明書
ca.key…CA秘密鍵

サーバ証明書/秘密鍵の作成・設置

# cd /etc/openvpn/easy-rsa/
# . ./vars
# ./build-key-server server    ←引数に「server」と入力
〜省略〜
Common Name (eg, your name or your server's hostname) []:server    ←ここのみ入力
〜省略〜

途中、[y/n]を求められたら y を選択.
入力終了後,/etc/openvpn/easy-rsa/keysに以下のファイルが作成される.
server.crt …サーバ証明書
server.key …サーバ秘密鍵

・Diffie Hellman (DH) パラメータの生成

# ./build-dh
※多少時間がかかる

・クライアント証明書&秘密鍵の作成・設置

# cd /etc/openvpn/easy-rsa/
# . ./vars
# ./build-key client1    ←引数に「client1」と入力
〜省略〜
Common Name (eg, your name or your server's hostname) []:client1    ←ここのみ入力
〜省略〜

途中、[y/n]を求められたら y を選択.
上記が終了すると/etc/openvpn/easy-rsa/keysディレクトリ内に以下のファイルが作成される.
client1.crt…クライアント証明書
client1.key…クライアント秘密鍵

以下必要な分だけクライアント証明書,秘密鍵を生成.

TLS認証用ファイルの作成

TLSのためのファイルを作成。
# openvpn --genkey --secret ta.key

実行後 ta.keyファイルがkeysフォルダの上のフォルダに作成される。

・サーバ設定ファイル

# vim /etc/openvpn/server_ca.conf
# 動作モード設定
mode server

# タップ(L2)使用
;dev tun
dev tap

# 仮想インタフェースのアドレス
ifconfig 192.168.200.1 255.255.255.0

# 通信に使用するポート
port 5500

# TCPUDPか
proto tcp-server
;proto udp

# 暗号強度設定
;cipher AES-256-CBC
cipher AES-128-CBC

# クライアントのアドレスは指定しない
float

# TLS サーバの設定
tls-server

# 証明書設定
cd /etc/openvpn/keys
dh dh1024.pem
ca ca.crt
cert server.crt
key server.key

# SSL/TLSの提供するセキュリティよりも安全性を高める
tls-auth ta.key 0

# client間の通信(Hub & Spoke)を許可する
client-to-client

# 最大クライアント数
max-clients 10

# キープアライブのping送信間隔(Sec)
keepalive 10 120

# パケット転送の際にLZO圧縮を有効にする
# comp-lzo

# ステータスログのパス指定
status /var/log/openvpn-status.log

# ログのパス指定
log /var/log/openvpn.log
log-append /var/log/openvpn.log

# moderate verbosity
verb 4
mute 10

・クライアント設定ファイル

# vim /etc/openvpn/client_ca.conf
# タップ(L2)使用
;dev tun
dev tap

# 仮想インタフェースのアドレス
ifconfig 192.168.200.3 255.255.255.0

# 暗号強度設定
;cipher AES-256-CBC
cipher AES-128-CBC

# TCPUDPか
proto tcp-client
;proto udp

# VPNサーバのアドレス
remote VPNサーバのIPアドレス
port 5500

# TLS クライアントの設定
tls-client

# 証明書設定
cd "C:\\Program Files\\OpenVPN\\ca"
ca ca.crt
cert client1.crt
key client1.key

# SSL/TLSの提供するセキュリティよりも安全性を高める
tls-auth ta.key 1

# パケット転送の際にLZO圧縮を有効にする
# comp-lzo

# キープアライブのping送信間隔(Sec)
keepalive 10 120

# moderate verbosity
verb 4
mute 10

・証明書ファイルの配置
作成した証明書や鍵ファイルを、設定ファイルで指定したディレクトリに移動する.

サーバ側で必要なファイルは
ca.crt, ca.key, server.crt, server.key, dh1024.pem, ta.keyの6つ.

クライアント側で必要なファイルは
ca.crt, ca.key, クライアント名.crt, クライアント名.key, ta.keyの5つ.

OpenVPN の起動

# openvpn --config /etc/openvpn/server_ca.conf &

後はクライアントからつないで接続テスト.