発行したクライアント証明書を失効させる
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