検索
連載

クラウドサーバと結ぶVPN環境を「OpenVPN」で構築する(前編)DRBDの仕組みを学ぶ(8)(2/3 ページ)

万一の時にも、業務に影響を与えない/自動的に復旧することを目指す「災害対策システム」。今回はオープンソースのVPNソフトウェア「OpenVPN」を使い、遠隔地のサーバとのVPN環境を構築する具体的な方法を説明します。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

証明書と秘密鍵を作成する

 VPN通信に必要な「証明書」と「秘密鍵」を作成します。

 まず、一号機、二号機のそれぞれで証明書と秘密鍵を格納するディレクトリを作成しておきます。

# mkdir -p /etc/openvpn/keys
証明書と秘密鍵の格納先ディレクトリを作成するコマンド

 証明書と秘密鍵は一号機で作成します。作成する証明書と秘密鍵は以下の通りです。

ファイル名 用途 格納先サーバ
ca.crt CA証明書 VPNサーバ/VPNクライアント
ca.key CAキー VPNサーバ/VPNクライアント
ta.key TLS認証鍵 VPNサーバ/VPNクライアント
server.crt VPNサーバ証明書 VPNサーバ
server.key VPNサーバ秘密鍵 VPNサーバ
dh2048.pem DHパラメーター VPNサーバ
client.crt VPNクライアント証明書 VPNクライアント
client.key VPNクライアント秘密鍵 VPNクライアント

CA証明書を作成する

 では、CA証明書から作成していきましょう。まず、ディレクトリを移動します。

cd /etc/openvpn/easy-rsa/2.0

 「vars」ファイルを修正します。修正するのは、64〜69行目にあるサーバ情報の部分です。こちらは自身の環境に合わせて適宜入力してください。

# vi vars
<省略>
export KEY_COUNTRY="JP"              #国名
export KEY_PROVINCE="Tokyo"          #都道府県
export KEY_CITY="Sumida-Ku"           #町
export KEY_ORG="bk-proxy"              #システム名
export KEY_EMAIL=xxx@xxxx.xxx         #メールアドレス
export KEY_OU=”ThirdWare Inc.“         #組織名
<省略>
「vars」ファイルの修正箇所(64行目〜69行目が該当)

 続いて、以下のコマンドを順番に実行していきます。

# source ./vars
# ./clean-all
# ./build-ca
# source ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys
# ./clean-all
# ./build-ca
<表示省略>
#
コマンド実行時の表示

 ./build-caのコマンド実行後に幾つかの設問がありますが、そのまま「Enter」で進めて問題はありません。

TLS鍵を作成する

 TLS鍵を作成します。

# openvpn --genkey --secret /etc/openvpn/easy-rsa/2.0/keys/ta.key 

サーバ用証明書と秘密鍵を作成する

 サーバ用証明書と秘密鍵を作成します。

# cd /etc/openvpn/easy-rsa/2.0
# ./build-key-server server

 先ほどと同様に、./build-key-server serverコマンドの実行後に幾つかの設問がありますが、途中まで「Enter」で進めて問題ありません。最後に2つの設問では、「y」を入力します。

<省略>
Certificate is to be certified until Mar  4 07:00:20 2026 GMT (3650 days)
Sign the certificate? [y/n]:y              #yと入力
1 out of 1 certificate requests certified, commit? [y/n]y              #yと入力
Write out database with 1 new entries
Data Base Updated
#
./build-key-server serverコマンドの設問では、最後の2つで「y」と入力して「Enter」で進めます

DHパラメーターを作成する

 DHパラメーターを作成します。

# openssl dhparam -out /etc/openvpn/keys/dh2048.pem 2048

 DHパラメーターは、作成に少し時間がかかります。コマンドプロンプトが返ってくるまで数十秒待ちましょう。

クライアント用証明書と秘密鍵を作成する

 クライアント用の証明書と秘密鍵を作成します。

# cd /etc/openvpn/easy-rsa/2.0
# ./build-key client

 サーバ用証明書の作成時と同様に、./build-key clientコマンドの設問も、途中まで「Enter」で進め、最後に2つの設問で「y」を入力します。

<省略>
Certificate is to be certified until Mar  4 07:04:58 2026 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
#
./build-key clientコマンドの設問では、最後の2つで「y」と入力して「Enter」で進めます

証明書と秘密鍵を配置する

 以上で証明書と秘密鍵を作成できました。これらを適切なディレクトリへ配置します。

 一号機で実行します。

# cd /etc/openvpn/easy-rsa/2.0/keys
# cp ca.crt ca.key server.crt server.key ta.key /etc/openvpn/keys/

 作成した証明書と秘密鍵を、二号機へscpコマンドでコピーします。

# cd /etc/openvpn/easy-rsa/2.0/keys
# scp ca.crt ta.key client.crt client.key root@<二号機のIPアドレス>:/etc/openvpn/keys/

 上記ではrootユーザーを使っていますが、自身の環境に合わせて読み替えて実行してください。

 なお、クラウド環境ではrootでのログインを禁止していることがあります。この場合は、ログイン可能なユーザーのホームディレクトリなどに一度ファイルを置いて、最終的に「/etc/openvpn/keys/」へ配置するようにします。

AWS環境へコピーする

 参考として、Amazon Web Services(AWS)環境での方法を説明します。コピー先のOSとしてRed Hat Enterprise Linux 7を想定しています。ec2-userが存在しない場合は、ログイン可能なユーザーのhome領域にコピーしてください。

# cd /etc/openvpn/easy-rsa/2.0/keys
# scp -i <ログイン用の鍵ファイル> ca.crt ta.key client.crt client.key ec2-user@<AWS環境のグローバルIPアドレス>:/home/ec2-user
「一号機」でのコマンド
# cd /home/ec2-user
# cp ca.crt client.crt client.key ta.key /etc/openvpn/keys/
「二号機」でのコマンド
(※ 初出時、「一号機でのコマンド」の一部に誤記がありました。上記の通り修正いたします。お知らせいただきました読者の方、誠にありがとうございました)

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る