2.5. 証明書の運用

2.5.1. 証明書要求の生成と署名

CA.pl -newreq 
(openssl req -config /etc/openssl.cnf -new -keyout newreq.pem -out newreq.pem \
-days 365) 

新しい秘密鍵と証明書要求を生成して、newreq.pem として保存します。 Common Name (CN) に証明書の主な使用法を入力します。 例えば、セキュアな web サイト www.sopac.org を持ちたい場合は、 www.sopac.org と入力、 セキュアな e-mail として franck@sopac.org を持ちたい場合は、 franck@sopac.org などです。

CA.pl -sign 
(openssl ca -config /etc/openssl.cnf -policy policy_anything -out newcert.pem \
-infiles newreq.pem) 

この cacert.pem を用いて要求に署名をし、 newcert.pem として証明書をコミットすることになります。 この cacert.pem (あなたの CA 証明書)のパスフレーズを入力する必要があります。 newcerts/xx.pem ファイルが作られ、 index.txt と serial がアップデートされます。

あなたの秘密鍵は newreq.pem の中の -PRIVATE KEY- に、 証明書は nercert.pem の -CERTIFICATE- に入ります。

newcert.pem のコピーが index.txt の中の適切なエントリーが作られるとともに newcerts/ 以下に置かれ、 クライアントは証明書の真正性を確認するために web サーバを通じて この情報を要求することができるようになります。

newreq.pem ファイルは証明書要求を含んでいますが、 秘密鍵も含んでいますので、取り扱いに注意してください。 -PRIVATE KEY- セクションは署名をするときには不要です。 ですから、誰か他の人にあなたの証明書要求に署名してもらうのなら、 ファイルから -PRIVATE KEY- セクションを取り除いてあることを確認してください。 あなたが誰かの証明書要求に署名するときには、 この人にその秘密鍵ではなく -CERTIFICATE REQUEST- セクションを要求してください。

2.5.2. 証明書の破棄(無効化)

証明書を破棄(無効化)するには単純に以下のようなコマンドを命令します:

openssl -revoke newcert.pem

データベースがアップデートされ、その証明書は失効した(revoked)と印しがつけられます。 ここで、新たな失効証明書リストを生成する必要があります。

openssl ca -gencrl -config /etc/openssl.cnf -out crl/sopac-ca.crl

この失効証明書リスト(Certificate Revokation List, CRL) ファイルは あなたの web サイトから取得できるようにしなければなりません。

証明書を破棄する時に、crldays, crlhours, crlexts のパラメータを 付け加える必要があるかもしれません。 最初の二つのパラメータはいつ次の CRL がアップデートされるかを示し、 最後のものは CRL v1 の代わりに CRL v2 を生成するために、 openssl.cnf で crl_exts セクションを用いることを示しています。

openssl ca -gencrl -config /etc/openssl.cnf -crldays 7 -crlexts crl_ext \
-out crl/sopac-ca.crl

2.5.3. 証明書の更新

ユーザはあなたにその古い証明書要求を送り、 その秘密鍵に基づいて新しいものを作成します。

まずあなたは、以前の証明書を破棄(無効化)し、再び証明書要求に署名しなければなりません。

古い証明書を見つけるには、要求に対応したその識別名 (Distinguished Name, DN) を index.txt ファイルの中で探します。 シリアル番号 <xx> を得て、破棄手続きのための証明書として cert/<xx>.pem ファイルを用いてください。

新しい証明書の有効期間の開始日と終了日を正しく設定する必要がありますから、 以下のように手動で証明書に署名しましょう。

openssl ca -config /etc/openssl.cnf -policy policy_anything -out newcert.pem \
-infiles newreq.pem -startdate [now] -enddate [previous enddate+365days]

[now] と [previous enddate+365days] を 正しい値で置き換えてください。

2.5.4. 証明書の表示

コード化された形式で証明書を保存しているかも知れませんが、 その場合、証明書の詳細を実際に読むには以下のコマンドを使います:

openssl x509 -in newcert.pem -noout -text

2.5.5. index.txt ファイル

index.txt の中には OpenSSL によって運用される様々な証明書があります。 各エントリは破棄されたもの(Revoked)には R, 有効なもの(Valid)には V, 期限切れのもの(expired)には E と印しがつけられています。

2.5.6. web ベースの認証局を立ち上げる

あなたが認証局(CA)であるためには以下のような若干の要件があります:

  1. ルート CA 証明書が公開されており、 アプリケーションに広くインストール可能であること。

  2. 失効証明書リストが公開されていること。

  3. 証明書の詳細、そのシリアル番号を表示すること。

  4. ユーザが証明書要求を申し込むためのフォームが用意されていること。

これらの要件は全部 web サーバとスクリプトを用いてできます。

準備中:ここに web インターフェース用のコードを入れる。