LoginSignup
1
0

More than 3 years have passed since last update.

CentOS7のeasy-rsaが3.0.6にバージョンアップされてからbuild-client-fullができなくなった場合の対応方法

Last updated at Posted at 2019-10-15

はじめに

OpenVPNのために、久しぶりにeasy-rsaでクライアント証明書を作成しようとしたら、次のエラーが出ました。

# ./easyrsa --ns-cert=YES build-client-full hoge.fuga nopass

Easy-RSA error:

EASYRSA_PKI does not exist (perhaps you need to run init-pki)?
Expected to find the EASYRSA_PKI at: /usr/share/easy-rsa/3/pki
Run easyrsa without commands for usage and command help.

このメッセージが表示される理由は、/usr/share/easy-rsa/3/pki ディレクトリ(シンボリックリンクを含む)が存在しないことが原因です。実際にlsしてみると、pkiディレクトリが無いことがわかります。

# ls -la
合計 56
drwxr-xr-x 3 root root    77 10月 15 10:37 .
drwxr-xr-x 5 root root    63  8月 31 09:22 ..
-rwxr-xr-x 1 root root 48730  2月  2  2019 easyrsa
-rw-r--r-- 1 root root  4651  2月  2  2019 openssl-easyrsa.cnf
drwxr-xr-x 2 root root    98  8月 31 09:22 x509-types

しかし、これまでOpenVPNを運用していた場合、pkiディレクトリが無いということはありえません(どこかにあります)。したがって、復旧することは可能ですので、焦る必要はありません。とりあえず復旧を進めることにします。

間違ってもeasyrsa init-pkiはしないように!! pkiディレクトリが存在しない状態では無害&pkiディレクトリが存在している状態で間違って実行してもWARNINGが出ますので、そこで踏みとどまれば実害ありませんが、それを無視して実行すると、pkiディレクトリの内容(これまで発行した証明書等)が初期化されます。

手順

1.pkiディレクトリをバックアップする

pkiディレクトリは、/etc/openvpn/pkiに存在するものとします。

# cd /etc/openvpn/pki
# cp -Rfp pki pki.bak

2.以下のディレクトリへ移動する

なお、以後の手順では、特記無い限り、同じディレクトリで作業を進めることとします。

# cd /usr/share/easy-rsa/3/

3.pkiディレクトリへのシンボリックリンクを作成する

CentOS7の場合、easy-rsaがバージョンアップされると、/usr/share/easy-rsa/以下に新たなバージョン用のディレクトリが作成されます。

# ls -la
合計 4
drwxr-xr-x   5 root root   63  8月 31 09:22 .
drwxr-xr-x. 98 root root 4096  9月 19 05:09 ..
drwxr-xr-x   3 root root   83  1月 26  2018 2.0
lrwxrwxrwx   1 root root    5  8月 31 09:22 3 -> 3.0.6
lrwxrwxrwx   1 root root    5  8月 31 09:22 3.0 -> 3.0.6
drwxr-xr-x   3 root root   29  8月 31 09:22 3.0.3
drwxr-xr-x   3 root root   77 10月 15 10:37 3.0.6

しかし、旧バージョンのディレクトリ上に作成されたファイルやディレクトリ、シンボリックリンクは引き継がれません。

私の場合は、/etc/openvpn/pkiへのシンボリックリンクを作成していましたので、新しいディレクトリへシンボリックリンクを作成しました。

# ln -s /etc/openvpn/pki

4. openssl-easyrsa.cnfをpkiディレクトリへコピーする

# cp -p /usr/share/easy-rsa/3/openvpn-easyrsa.cnf .

5. pkiディレクトリ以下にディレクトリを作成する

revokedディレクトリを作成し、その階層下にcerts_by_serial, private_by_serial, reqs_by_serial ディレクトリを作成します。また、revokedと同じ構成のディレクトリとして、renewedディレクトリを作成します。

# mkdir revoked
# chmod 700 revoked
# cd revoked
# mkdir certs_by_serial
# mkdir private_by_serial
# mkdir reqs_by_serial
# chmod 700 *
# cd ..
# cp -Rp revoked renewed

6.easy-rsa build-client-fullを実行する

/usr/share/easyrsa/3 ディレクトリへ移動し、easyrsa build-client-fullを実行すると、以下のようにエラーなく進むようになります。以後は、

./easyrsa --ns-cert=YES build-client-full hoge.fuga nopass

Using SSL: openssl OpenSSL 1.0.2k-fips  26 Jan 2017
Generating a 2048 bit RSA private key
...............................................................................
.....
writing new private key to '/usr/share/easy-rsa/3/pki/private/hoge.fuga.key.xxxxxxx'
-----
Using configuration from /usr/share/easy-rsa/3/pki/safessl-easyrsa.cnf
Enter pass phrase for /usr/share/easy-rsa/3/pki/private/ca.key:

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0