クライアント証明書の失効とCRL(apache)

発行したクライアント証明書を失効させる

openssl ca -gencrl -revoke client.crt -out ssl.crl/cert.crl

「-out ssl.crl/cert.crl」はapacheでは、

SSLCARevocationFile   /hoge/ssl.crl/cert.crl

で指定したファイル、また、

SSLCARevocationPath   /hoge/ssl/ssl.crl

のFileとPathは同時に使用できないらしいことと、Pathの場合はCRLをハッシュする必要があります。(やりかたはどっかに書いてあったけど不明(^^;)

失効させるとindexファイルの1カラム目が「R」になります。有効なのは「V」です。(Revoke,Validかな)

/pathto/hogeCA/index.txt
R       350728073327Z   050804074628Z   01      unknown /C=JP/ST=hogehoge~~

このCRL(証明書失効リスト)ファイルについて注意点は、「-gencrl」した際に、
openssl.conf 内の「default_crl_days」の値か、opensslのオプションの「-crldays」の値で、次のCRLファイルの発行予定日がCRLファイル内にセットされます。この期限がくるまでに、CRLを更新しないと、クライアント証明書の機能が動かなくなってしまいます。ApacheのエラーログにCRL has expiredとかってなって、有効な証明書でもつながらなくなります。

[Thu Jan 11 16:12:12 2007] [warn] Found CRL is expired - revoking all certificates until you get updated CRL
[Thu Jan 11 16:12:12 2007] [error] Certificate Verification: Error (12): CRL has expired

破棄する証明書がなくても、次の更新日がきそうなら以下のようにしておけば更新日だけ更新されます。

openssl ca -gencrl  -out ssl.crl/cert.crl

中身の確認

openssl crl -in ./ssl.crl/cert.crl -text
Last Update: 最終更新日
Next Update: 次回更新日

もうひとつ、CRLファイルを更新しても、SSLCARevocationFile or Path はApacheを再起動しないと読み込まれないので、更新した際はApacheの再起動が必要になります。

<追記>
CentOS5の場合は、crlnumberを作成しておかないとダメかも

cd /var/www/ssl
echo '00' > hogeCA/crlnumber

コメントを残す

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

CAPTCHA