2011-11-02

OpenVPN設定 - 認証局の設置

By Taro Yamazaki  |  22:30

OpenVPNはPKI(Public Key Infrastructure:公開鍵基盤)に基づいたSSL VPNです。PKIにおいては鍵(Key)と証明書(Certification)の組み合わせでセキュリティを保つことになりますが、その鍵と証明書を作成、管理するために必要になるのが認証局(Certificate Authority:CAとも略される)で、いわばOpenVPNの認証(ユーザー管理)の中枢となる部分です。
OpenVPNの設定は、まずこの認証局を設置することから始めます。

CA(認証局)の役割

CAの役割を簡単にまとめると、「安全な通信を行うために必要な鍵と証明書を発行・管理すること」となります。Webサイトで使用されるSSL証明書は外部の認証局(ベリサインなど)を利用するのが一般的ですが、OpenVPNの場合は通常、独自に認証局を設置します。
認証局を設置すると聞くとちょっと大掛かりな感じがしますが、必要なファイルはOpenVPNのインストール時に同時にインストールされており、すぐに使い始めることができます。では、具体的な手順を説明しましょう。

PKI利用のための準備

1. easy-rsaディレクトリのコピー

OpenVPNをRPMでインストールすると、「easy-rsa」というPKIのためのツール群が同時にインストールされています。このファイルは /usr/share/doc/openvpn-2.2.1/easy-rsa に配置されていますが、/etc/openvpn にコピーしておきましょう。
[root@localhost ~]# cp -fr /usr/share/doc/openvpn-2.2.1/easy-rsa /etc/openvpn/
[root@localhost ~]# cd /etc/openvpn/easy-rsa
[root@localhost easy-rsa]# ls
1.0  2.0  Windows
easy-rsaディレクトリには1.0と2.0という2つのディレクトリがありますが、2.0を使用します。今後はこのディレクトリ(/etc/openvpn/easy-rsa/2.0)内で作業します。

2. デフォルト設定ファイルの書き換え

今後の各手順で使用する設定ファイルを書き換えておきます(書き換えなくても動作するので、テスト環境などであれば必須ではありません)。この設定ファイルは、証明書や鍵を作成するときのデフォルト値を設定するためのもので、 /etc/openvpn/easy-rsa/2.0/vars というファイルになります。
書き換えるのは主にファイル末尾にある各exportの値ですが、今回は最低限の部分だけ書き換えましょう。すべて英語表記になる点に注意してください。
export KEY_COUNTRY="JP"  # 国名コードです。
export KEY_PROVINCE="Tokyo"  # 都道府県名を指定します。
export KEY_CITY="Shinagawa"  # 都市名です。
export KEY_ORG="Example company"  # 組織名です。社名や団体名など。
export KEY_EMAIL="admin@example.com"   # CAの管理者のメールアドレスです。
これ以降の7行は今回ひとまず使用しないので、コメントアウトしておきましょう。
#export KEY_CN=changeme
#export KEY_NAME=changeme
#export KEY_OU=changeme
#export PKCS11_MODULE_PATH=changeme
#export PKCS11_PIN=1234
#export PKCS11_MODULE_PATH=
#export PKCS11_PIN=1234

3. openssl.cnfファイルのコピー

/etc/openvpn/easy-rsa/2.0/openssl-1.0.0.cnf をOpenSSLの設定ファイルとしてそのまま使用するためにopenssl.cnfにコピーします。
[root@localhost 2.0]# cp openssl-1.0.0.cnf openssl.cnf

4. 設定値の反映とデータのクリア

[root@localhost 2.0]# . ./vars 
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys
[root@localhost 2.0]# ./clean-all 
clean-allは既存の鍵や証明書などをクリアするためのコマンドです。初回の準備のために実行しますが、運用中の環境で実行しないようにしてください。

5. DHパラメータの生成

鍵の交換に使用するDHパラメータを生成します。build-dhコマンドを実行するだけです。
環境によっては数分かかります。
[root@localhost 2.0]# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
..........................................................+......................................++*++*++*

CA(認証局)の設置

準備ができたところで、いよいよCAの設置です。

CAの設置

build-caコマンドを実行します。後半で国名などを聞かれますが、このデフォルト値は先程の vars ファイルで設定したものなので、変える必要がなければそのままENTERキーを押すだけです。
[root@localhost 2.0]# ./build-ca
Generating a 1024 bit RSA private key
..++++++
.................................................................++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [JP]:
State or Province Name (full name) [Tokyo]:
Locality Name (eg, city) [Shinagawa]:
Organization Name (eg, company) [Example company]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [Example company CA]:
Name []:
Email Address [admin@example.com]:
これで keys ディレクトリに ca.crtca.key が生成されます。これでCAが設置できました。
この2つのファイルは重要なファイルなので、バックアップをとっておくことをお勧めします。CAの鍵(ca.key)は流出してしまうとセキュリティ上致命的な問題になりますので、保管には十分注意してください。
次回はサーバー用、クライアント用の鍵と証明書を作成しましょう。続きはこちらです。

Author: Taro Yamazaki

© 2015 yamata::memo | Distributed By My Blogger Themes | Created By BloggerTheme9
TOP