クライアント証明書環境

失効手順

 失効するだけなら以下の手順。

openssl ca -gencrl -revoke user.crt

 user.crt は失効させる証明書。

 実際は、SSL サーバに失効リストを読み込ませないといけないので、失効リスト出力と併せて、以下のコマンドラインを使う。

openssl ca -gencrl -revoke user.crt -out cert.crl

 -out の引数は、extra/httpd-ssl.conf の SSLCARevocationFile? ディレクティブで指定しているファイルのフルパスを書く方が便利。

 失効リストが生成されたら、Apache の再起動を忘れずに。

 なお、失効リストの更新期限は /etc/pki/tls/openssl.cnf の default_crl_days で指定した日数なので、この日数が過ぎるまでに更新が必要。 更新を忘れると、クライアント証明書環境全体が使えなくなる。注意。

 失効リストの更新だけをするなら、以下を実行

openssl ca -gencrl -out cert.crl

 忘れないように、cron で実行する方が確実かもしれないが、実行時にはパスフレーズを要求されるので、非推奨だがパスフレーズをなしにするか、別の方式でこれを突破しないといけない。

現在の証明書状態を確認する

CA/index.txt を見ると分かる

先頭カラムが状態を表しており、

V: 有効(Valid)
R: 失効された(Revoked)

となっている。他にも状態があるかもしれないけど、見たことないので不明。

失効操作で失敗する

CentOS 5 環境で失効操作をすると、以下のエラーが出て失敗した。

# openssl ca -gencrl -revoke user.crt
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for ../../CA/private/cakey.pem:
../../CA/crlnumber: No such file or directory
error while loading CRL number
23044:error:02001002:system library:fopen:No such file or directory:bss_file.c
:352:fopen('../../CA/crlnumber','r')
23044:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:

 crlnumber をオープンできないというエラーだが、fopen で 'r' スイッチ入れたら、「ファイルがなかったら作成する」というものじゃないのかという不思議。

 作れないものは仕方ないので、手動で作る

echo '00' > ../../CA/crlnumber
# openssl ca -gencrl -revoke user.crt -out cert.crl
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for ../../CA/private/cakey.pem:(パスフレーズ入力)
Revoking Certificate 01.
Data Base Updated

 うまくいく。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS