2014-01-23

easy-rsa 3 で認証局を構築する

By Taro Yamazaki  |  17:00 No comments

現在ダウンロードできるOpenVPNでは、今まで認証局の構築で使用していたeasy-rsaが含まれなくなっています。OpenVPN.netのダウンロードページにも
Note that easy-rsa is no longer bundled with OpenVPN source code archives. To get it, visit the easy-rsa page on GitHub, or download it from our Linux software repositories.
と記載されており、別途入手する必要があります。今回はインストール手順と使用法についてご説明します。

以前のバージョンとの違い

以前のeasy-rsa(バージョン2)と大きく異なるのは以下の点です。

  • 実行コマンドは easyrsa のみとなり、続く引数で実行する処理を切り替えるようになりました。
  • コマンド実行前に vars を呼び出す必要はなくなりました。easyrsaと同じディレクトリにvarsというファイルを配置し、その中で設定値を指定しておけば、自動的に読み込まれます(ただ、後述する「X509 DNモード」の新設により、以前とは異なりvarsファイルは作成しなくてもよいケースが多くなりました)。
  • 秘密鍵や証明書を作成する際に含める情報を制御するための「X509 DNモード」と呼ばれるパラメータが追加されました。デフォルトは「cn_only」となっており、秘密鍵や証明書の作成にはCN(共通名)の情報だけが必要になりました(組織名や都道府県名などを設定する必要がなくなりました)。今まで同様にすべてのデータを含められるようにするには、このモードを「org」に変更します。

easy-rsaのダウンロード

easy-rsaの最新版はGitHubから入手できます。使用する環境に合わせたパッケージをダウンロードしてください。今回の例ではLinux環境への導入手順を説明します。

ダウンロードしたファイルを展開しておきましょう。
[root@localhost ~]# tar xzf EasyRSA-3.0.0-rc1.tgz
[root@localhost ~]# cd EasyRSA-3.0.0-rc1
[root@localhost EasyRSA-3.0.0-rc1]# ls
COPYING  ChangeLog  Licensing  README.quickstart.md  doc  easyrsa
openssl-1.0.cnf vars.example  x509-types

初期化

init-pkiコマンドで認証局を初期化します。
[root@localhost EasyRSA-3.0.0-rc1]# ./easyrsa init-pki

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /root/EasyRSA-3.0.0-rc1/pki
これは認証局設置時にのみ実行します。
このコマンドを実行すると、easyrsaと同じディレクトリにpkiディレクトリが生成されます。認証局によって生成されるデータはここに保存されます。

認証局の作成

build-caコマンドで認証局を作成します。
[root@localhost EasyRSA-3.0.0-rc1]# ./easyrsa build-ca
Generating a 2048 bit RSA private key
.....................................................................+++
.....+++
writing new private key to '/root/EasyRSA-3.0.0-rc1/pki/private/ca.key'
Enter PEM pass phrase: [パスフレーズを入力]
Verifying - Enter PEM pass phrase: [パスフレーズを入力]
-----
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.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/root/EasyRSA-3.0.0-rc1/pki/ca.crt
デフォルトのX509 DNモードが「cn_only」のため、共通名(Common Name)のみが問い合わせられます。デフォルト値でよければそのまま[Enter]キーを押していただいてもかまいません。

DHパラメータの生成

gen-dhコマンドでDHパラメータを生成します。
[root@localhost EasyRSA-3.0.0-rc1]# ./easyrsa gen-dh
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
...............................................................
......................................................+........
.........................................................+.....
...............................................................
...............................................................
...............................................................
....................................................+..........
..........................................+....................
..............+........+.......................................
...............................................................
...............................................................
...............................................................
..............................................++*++*
DH parameters of size 2048 created at /root/EasyRSA-3.0.0-rc1/pki/dh.pem

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

以前のバージョンのbuild-key-serverコマンドと同様に、秘密鍵の作成から証明書の署名までまとめて行うには、build-server-fullコマンドを使用します。
デフォルトの動作では、パスフレーズの入力が求められ、そのパスフレーズによって秘密鍵が暗号化されます。パスフレーズを不要にしたい場合はnopassオプションを追加します。
[root@localhost EasyRSA-3.0.0-rc1]# ./easyrsa build-server-full server1 nopass
Generating a 2048 bit RSA private key
.....................................+++
.............+++
writing new private key to '/root/EasyRSA-3.0.0-rc1/pki/private/server1.key'
-----
Using configuration from /root/EasyRSA-3.0.0-rc1/openssl-1.0.cnf
Enter pass phrase for /root/EasyRSA-3.0.0-rc1/pki/private/ca.key: [CAの署名用パスフレーズを入力]
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :PRINTABLE:'server1'
Certificate is to be certified until Jan 21 05:57:57 2024 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

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

以前のバージョンのbuild-keyコマンドと同様に、秘密鍵の作成から証明書の署名までまとめて行うには、build-client-fullコマンドを使用します。
サーバーの場合と同様、デフォルトの動作では、パスフレーズの入力が求められ、そのパスフレーズによって秘密鍵が暗号化されます。パスフレーズを不要にしたい場合はnopassオプションを追加します。
[root@localhost EasyRSA-3.0.0-rc1]# ./easyrsa build-client-full client1 nopass
Generating a 2048 bit RSA private key
...............................+++
...............................................................
...............................................................
..+++
writing new private key to '/root/EasyRSA-3.0.0-rc1/pki/private/client1.key'
-----
Using configuration from /root/EasyRSA-3.0.0-rc1/openssl-1.0.cnf
Enter pass phrase for /root/EasyRSA-3.0.0-rc1/pki/private/ca.key: [CAの署名用パスフレーズを入力]
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :PRINTABLE:'client1'
Certificate is to be certified until Jan 21 06:04:42 2024 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated
各コマンドによって生成されたファイルは、pkiディレクトリ内の各サブディレクトリに格納されています。
  • private : 秘密鍵
  • reqs : 証明書要求
  • issued : 証明書

この他に使用できるコマンドやオプションについては、Readmeファイルやヘルプを参照してください。
[root@localhost EasyRSA-3.0.0-rc1]# ./easyrsa
または
[root@localhost EasyRSA-3.0.0-rc1]# ./easyrsa help [コマンド名]
でヘルプが参照できます。

秘密鍵/証明書作成時に共通名のみでOKになったので、今までより少し簡単になりましたね。
Image courtesy of Sharron Goodyear / FreeDigitalPhotos.net

Author: Taro Yamazaki

0 コメント:

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