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 # TCPかUDPか 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 # TCPかUDPか 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 &
後はクライアントからつないで接続テスト.