Amazon-VPC

【Client VPN】OpenVPN easy-rsaでサーバ証明書の有効期限を100年にする

はじめに

こんにちは、omkです。
ClientVPNで相互認証する際にeasy-rsaで認証局を建てて証明書を発行することがあると思います。
何年でも構いませんが出来るだけ証明書を更新しなくていいように設定しておくと楽です。プライベート認証局ですしACMに登録して使うのでセキュリティ的にも大丈夫かと思います。

前提

CentOS7の環境で、こちらを参考に進めます。

https://docs.aws.amazon.com/ja_jp/vpn/latest/clientvpn-admin/client-authentication.html#mutual

設定

git clone https://github.com/OpenVPN/easy-rsa.git
cd easy-rsa/easyrsa3

ここまではそのまま実行します。
easyrsa3配下の「openssl-easyrsa.cnf」が設定ファイルです。

less -N openssl-easyrsa.cnf

デフォルトだと28行目に

default_days    = $ENV::EASYRSA_CERT_EXPIRE

とありました。EASYRSA_CERT_EXPIREという環境変数で指定するようです。
easy-rsaでは「vars」というファイルで変数を設定することができます。
easyrsa3配下の「vars.example」というファイルをコピーして編集していきます。

cp vars.example vars
vi vars

EASYRSA_CERT_EXPIREで検索すると129行目にありました。

#set_var EASYRSA_CERT_EXPIRE    825

825日になっています。
これを100年(36500日)にしてコメントアウトを外します。

set_var EASYRSA_CERT_EXPIRE    36500

ついでにCA自体の有効期限も100年にしておきます。EASYRSA_CERT_EXPIREの少し上にあります。

set_var EASYRSA_CA_EXPIRE       36500

以上で編集は完了です。エディタを保存して終了します。
最後にpkiを初期化します。

./easyrsa init-pki

以降で新規の証明書の有効期限を変えたい場合はvarsファイルを変更するだけで可能となります。初期化はしなくて構いません。

確認

では実際に証明書を発行してみて確認しましょう。まずCA証明書を発行します。

./easyrsa build-ca nopass

次にサーバ証明書を発行します。

./easyrsa build-server-full server nopass

次のように出ていたら成功です。36500日になっていることを確認しましょう。

Certificate is to be certified until Jul 13 02:37:43 2120 GMT (36500 days)

証明書からでも確認できます。

Validity
            Not Before: Aug  6 02:37:43 2020 GMT
            Not After : Jul 13 02:37:43 2120 GMT

クライアント証明書も同様に100年になっています。

まとめ

easy-rsaでサーバ証明書の有効期限を100年に設定できることを確認しました。
VPNエンドポイントの作り直しは面倒なので有効期限は長い方がいいですね。
代わりに使わないクライアント証明書は失効させておきましょう。
https://docs.aws.amazon.com/ja_jp/vpn/latest/clientvpn-admin/cvpn-working-certificates.html

以上です。