ひきこもりがち、もしくは休みがちな社会人に欠かせないOpenVPN。
今回、突然クライアント認証ができなくなってしまった事例があったので、ご紹介します。
エラー内容・原因
ある日、突然OpenVPNに接続ができなくなりました。エラーログはこんな感じ。
Thu Apr 11 14:00:00 2018 XX.XX.XX.XX:XXXXX VERIFY ERROR: depth=0, error=CRL has expired: C=JP, ST=Tokyo, L=Minato-ku, O=example.co.jp, CN=xxxx, name=RSA, emailAddress=xxxx@example.co.jp
ログにはVERIFY ERROR: depth=0, error=CRL has expired
というエラーがあったので、証明書付近で問題が発生していると予想できます。
証明書の有効期間はいじっている記憶があったので大丈夫では?と思ってましたが、調べていくうちに証明書廃止リストにも有効期間があることが発覚。
証明書廃止リストの内容を確認するコマンドを実行してみました。
openssl crl -in ./../config/crl.pem -text
今回わたしの環境で実行した結果がこちら。
Certificate Revocation List (CRL): Version 1 (0x0) Signature Algorithm: sha256WithRSAEncryption ... Last Update: Feb 22 02:07:18 2018 GMT Next Update: Mar 22 02:07:18 2018 GMT
実行結果のNext Update
を見ると、、、証明書廃止リストの期限が切れちゃってますね。
証明書の期限が切れると、(当たり前ですが)全ての認証ができなくなります。
今回の認証エラーの原因はこれでした。
解決策
easy-rsaを再度作り直すのは面倒なので、証明書廃止リストだけ作り直しちゃいました。実行時はcrl.pemのバックアップを取るのだけお忘れなく。
まずは環境変数をセットして、
vars.vat
証明書廃止リストを作成!
openssl ca -gencrl -keyfile keys/ca.key -cert keys/ca.crt -out keys/crl.pem config %KEY_CONFIG%
これで証明書廃止リストが\easy-rsa\keysのフォルダに作成されているはずなので、configフォルダに移動します。
最後にOpenVPNを再起動すれば、エラーが解消します。