OpenSSLで発行した証明書を失効させる。
前回、クライアント証明書の発行まで行いましたが、続きとして失効から記載します。
証明書の失効
証明書は有効期限が切れると失効して利用できなくなるが、場合によっては有効期限が切れていなくても強制的に執行させる必要があることが考えられる。(例:クライアント証明書が入ったPCを落とした)
その場合、証明書を発行した認証局(CA)にて強制的に失効させることが可能です。
コマンドは以下になります。引数「-revork」に与えている値は、失効させたい証明書のパスになります。
証明書のシリアル番号で失効させる引数もあるようですが、ここでは証明書ファイル指定で実施します。
openssl ca -revoke /etc/pki/CA/newcerts/client1_cert.pem
もし、可能であれば証明書のデータベースファイルである Index.txt を覗いてみましょう
cat /etc/pki/CA/index.txt
失効操作を行った証明書のデータの先頭に「R」が表示されているはずです。
次は、失効した情報をクライアント証明書による認証を実行している機器に伝播するのですが、伝播させる方法として大きく選択肢は2つ、証明書失効リストを使う方法とOCSPというプロトコルを使う方法があります。
証明書失効リスト(CRL: Certificate Revocation List)
CRLはその名の通り、失効した証明書の情報をリスト化したファイルとなります。
認証局(CA)にて以下のコマンドを実行することで、CRLを発行することが可能です。
openssl ca -gencrl -out /etc/pki/CA/crl/CA.crl
CRLの内容を確認する場合は以下のコマンドを実行します。
/etc/pki/CA/crl/CA.crl
CRLには有効期限があり、定期的に発行する必要があります。
CRLの有効期限はOpenSSLのデフォルトでは30日に設定されています。
有効期限を変更したい場合は /etc/pki/tls/openssl.cnf の以下の値を書き換えてください。
default_crl_days= 30 # how long before next CRL
発行したCRLは「証明書失効リスト配布ポイント(CDP:CRL Distribution Point)」と呼ばれる場所に配置しておくと、クライアント証明書認証を実施している機器から取得しにアクセスしてきます。
CDPはHTTPサーバかLDAPサーバが利用されることが多いです。
HTTPサーバを利用する場合は、任意のURLにファイルをコピーして公開しておけばよいです。※一度決めたら基本的に変えないでください。
(例:http://ca_host/crl/CA.crl)
OCSPですが、記事のサイズが大きくなりそうなので、次回とさせていただきます。