手当たり次第に書くんだ

飽きっぽいのは本能

OpenVPN CRL 有効期限が切れて接続不可となる場合の対処

この記事も参考になります。

現象と原因

OpenVPN のバージョンが 2.4 になってから crl.pem の有効期限を読み込むようになったようです。このため、crl.pem を作成してから 30 日(デフォルトの CRL 有効期限)経過すると error=CRL has expired となり、全ての接続を受け付けなくなります。

CRL 有効期限経過時の OpenVPN サーバーのログは下記のようになります。

Mon Oct 23 21:27:31 2017 TLS: Initial packet from [AF_INET]xxx.xxx.xxx.xxx:xxxx, sid=xxxxxxxx xxxxxxxx
Mon Oct 23 21:27:31 2017 VERIFY ERROR: depth=0, error=CRL has expired: C=XX, ST=XXXXXXXX, L=XXXXXXXX, O=XXXXXXXX, OU=XXXXXXXX, CN=XXXXXXXX, name=XXXXXXXX, emailAddress=XXXXXXXX
Mon Oct 23 21:27:31 2017 OpenSSL: error:xxxxxxxx:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate returned
Mon Oct 23 21:27:31 2017 TLS_ERROR: BIO read tls_read_plaintext error
Mon Oct 23 21:27:31 2017 TLS Error: TLS object -> incoming plaintext read error
Mon Oct 23 21:27:31 2017 TLS Error: TLS handshake failed
Mon Oct 23 21:27:31 2017 SIGUSR1[soft,tls-error] received, process restarting
Mon Oct 23 21:27:31 2017 Restart pause, 300 second(s)

バージョン 2.3 までは crl.pem を扱う際に独自のライブラリを使用していましたが、バージョン 2.4 から openssl に変更されたためとのことです。

対処方法

CRL の有効期限を 10 年(任意の期間でよい)にして crl.pem を再生成することで対処することができます。この後、30 日経過しても問題なく接続できれば成功です。

/etc/openvpn/easy-rsa/openssl-1.0.0.cnf

easyrsa3 では環境変数で CRL 有効期限を設定可能ですが、easyrsa2 には存在しないため openssl 設定ファイルを編集します。easyrsa2 内に存在する openssl の設定ファイルは複数存在しますが、インストールされている OpenSSL のバージョンと同じ設定ファイルを編集します。

[root@centos ~]# vim /etc/openvpn/easy-rsa/openssl-1.0.0.cnf

#default_crl_days= 30
default_crl_days= 3650

crl.pem の再生成

crl.pem を生成するため、ダミーの証明書を作成してそれを失効させます。そして生成された crl.pem を/ etc/openvpn にコピーして OpenVPN を再起動することで解消されます。

[root@centos ~]# /etc/openvpn/easy-rsa/build-key dummy
[root@centos ~]# /etc/openvpn/easy-rsa/revoke-full dummy
[root@centos ~]# cp /etc/openvpn/easy-rsa/key/crl.pem /etc/openvpn
[root@centos ~]# service openvpn restart

参考情報

OpenVPN CRL 有効期限が切れて接続不可となる場合の対処

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る