補助金に関連する当ページの情報について
当ページの記載事項に基づいてすべてを判断せず、必ず公募要領を確認してください。当社ページの見解に従った結果、不採択となった場合も、当社は責任を負いかねます。このページの情報や見解は、予告なしに変更することがあります。

ブログ プライバシー・セキュリティ 士業DX

【OpenVPN】IaaSにOpenVPNサーバを立てて自宅と事務所でリモートデスクトップする(6)

https://imamura-net.com

おはようございます!マネジメントオフィスいまむらの今村敦剛です。

この度、IDCフロンティアのIaaS型パブリッククラウドサービスを使い、OpenVPNサーバを構築しました。その構築方法を記録する第6回目です。今回は、サーバとクライアントのVPN通信に必要な鍵と証明書の作成をします。

スポンサーリンク

この連載の全体的な構成

この連載は、全10回を予定しています。今回は第6回目「鍵・証明書作成」です。

連載記事一覧

OpenVPNを使う証明書と鍵のイメージ

OpenVPNで、サーバがクライアントの認証に使うのはSSL認証です。一般的なユーザーIDとパスワードの組み合わせよりも、もっと安全な方法です。SSL認証をするためには「証明書」や「鍵」の役割を果たすファイルが必要になります。

SSL認証のやり方は複雑ですが、ごく簡単に説明すると、下記の図のようなイメージです。認証局は、サーバー証明書が正しいことを認証する役割を果たしています。そして認証局、サーバ、クライアントの3者それぞれが該当する鍵や証明書を持ち寄ることで、通信相手が正しいことを確認しています。

今回は、これらの鍵を作成していきます。

認証局の作成とCA証明書・CA鍵の作成

それでは早速、認証局を作成し、CA証明書とCA鍵を生成しましょう。最初のステップは、適切なディレクトリに移動することです。(ちなみに3.0.8というディレクトリ名は、バージョンによって変わる可能性がありますので、その点注意してくださいね)

 command
cd /usr/share/easy-rsa/3.0.8

次に、「easyrsa init-pki」コマンドを実行し、認証局を初期化します。

 command
./easyrsa init-pki

これで/usr/share/easy-rsa/3.0.8/に、新たに「pki」というディレクトリが生まれます。

さらに、「easyrsa build-ca」コマンドを走らせて、認証局を作成します。

 command
./easyrsa build-ca

この過程で「pass phrase」と「Common Name(認証局の名前)」を入力しろと言われます。

後で混乱を避けるためにも、管理しやすい(≒自分が忘れないような)パスフレーズと名前を選びましょう。ここで設定したpass phraseとCommon Nameは、後々サーバやクライアントの証明書や秘密鍵を作る際に必要になります。

なお、認証局が完成すると、以下のディレクトリに認証局の秘密鍵と証明書が生成されます。

  • 認証局(CA)の秘密鍵:/usr/share/easy-rsa/3.0.8/pki/private/ca.key
  • 認証局(CA)の証明書:/usr/share/easy-rsa/3.0.8/pki/ca.crt

これらの証明書は、後でOpenvpnのディレクトリに移動させるんですが、今はただ作成されたことを確認するだけで大丈夫です。

サーバの秘密鍵と証明書の作成

お次は、OpenVPNサーバの秘密鍵と証明書の作成です。

「easyrsa build-server-full」コマンドを使って、OpenVPNサーバの秘密鍵と証明書を生成します。

 command
./easyrsa build-server-full server nopass

上記のコマンド内の「server」は、秘密鍵と証明書のファイル名になりますので、お好きな名称に変えることもできます。また「nopass」というパラメーターをつけると、サービス起動時にパスワードを尋ねてこないようになります。セキュリティレベルは落ちるかもしれませんが、今回のぼくの用途ではパスワードは不要なので、「nopass」のパラメーターをつけています。

このとき、先ほど設定した認証局のパスフレーズを入力するように求められるので、忘れずに入力してください。

コマンドが無事に実行されれば、OpenVPNサーバの証明書と秘密鍵が以下のディレクトリに新しく作成されます。

  • OpenVPNサーバの秘密鍵:/usr/share/easy-rsa/3.0.8/pki/private/server.key
  • OpenVPNサーバの証明書:/usr/share/easy-rsa/3.0.8/pki/issued/server.crt

クライアントの秘密鍵と証明書の作成

さあラストスパートです。「easyrsa build-client-full」コマンドを実行して、クライアントの秘密鍵と証明書を作成しましょう。

 command
./easyrsa build-client-full client nopass

コマンドの「client」の部分には、お好みのクライアント名を設定できます。今回は説明のために「client」とだけにしていますが、クライアントが複数台ある場合には、わかりやすいように連番をつけるのも良いでしょう(例えばclient1, client2といった具体的な名前ですね)。

再度、コマンドを実行する際には先ほど設定した認証局のパスフレーズの入力が必要になるので、忘れないように注意してくださいね。

さらに、ここでも「nopass」のパラメーターをつけています。これにより、クライアントの接続時にパスワードの入力が不要となります。

コマンドが正常に実行されると、クライアントの証明書と秘密鍵が新しく作成されます。

  • クライアントの証明書:/usr/share/easy-rsa/3.0.8/pki/issued/client.crt
  • クライアントの秘密鍵:/usr/share/easy-rsa/3.0.8/pki/private/client.key

さらに、TLS-Auth用共有鍵を作成しましょう。これはオプションですが、セキュリティレベルが上がるため作成しておくことをお勧めします。(DoS攻撃への対策になるんですよ)

 command
openvpn --genkey --secret ta.key

コマンドが正常に実行されれば、以下のディレクトリに新しいTLS鍵が生成されます。

  • TLS-Auth⽤共有鍵:/usr/share/easy-rsa/3.0.8/ta.key

そして最後に、DHパラメータの生成です。DH法(Diffie-Hellman鍵共有法)は、第三者に鍵を知られずに受信者へ伝えるための技術だそうです。

 command
./easyrsa gen-dh

少し時間がかかりますが、コマンドが正常に実行されれば、以下のディレクトリに新しいTLS鍵が生成されます。

  • dh.pem /usr/share/easy-rsa/3.0.8/pki/

これでvpnの設定に必要な鍵・証明書関係ができました😊

鍵・証明書のありかについて

以上の作業で作成された鍵・証明書は、下記のディレクトリに所在しているはずです。(3.0.8というディレクトリ名は、バージョンによって変わりますので気をつけてください)。

これらが全て作成されていることを確認しておくと安心ですね。(作成されていなければ、前に戻って該当する証明書と鍵を作成しておいてください)

  • ca.crt /usr/share/easy-rsa/3.0.8/pki/
  • server.key /usr/share/easy-rsa/3.0.8/pki/private
  • server.crt /usr/share/easy-rsa/3.0.8/pki/issued
  • dh.pem /usr/share/easy-rsa/3.0.8/pki/
  • ta.key /usr/share/easy-rsa/3.0.8/
  • ca.key /usr/share/easy-rsa/3.0.8/pki/private
  • client.key /usr/share/easy-rsa/3.0.8/pki/private
  • client.crt /usr/share/easy-rsa/3.0.8/pki/issued

スポンサーリンク

スポンサーリンク

最近の人気記事

1

おはようございます!マネジメントオフィスいまむらの今村敦剛です。 国際標準化機構(ISO)は、現行のISO9001:2015(品質マネジメントシステム規格I)を改訂する準備を進めているようです。現在の ...

2

おはようございます!マネジメントオフィスいまむらの今村敦剛です。 2024年2月、ISO(国際標準化機構)は、マネジメントシステム規格に「気候変動への配慮」を盛り込む形で規格の一部を改定しました。今回 ...

3

おはようございます!マネジメントオフィスいまむらの今村敦剛です。 5Sの考え方がISO9001や14001の運用に役立つことがあります。その逆もあって、ISOの仕組みが5S活動に役立つこともあるんです ...

-ブログ, プライバシー・セキュリティ, 士業DX

© 2024 Management Office Imamura Ltd.