web-dev-qa-db-ja.com

証明書を失効させてCRLを生成するにはどうすればよいですか?

自己署名CA証明書を作成してから、このチュートリアル here を使用してクライアント証明書を作成しました。私はクライアント証明書を失効させようとしています:

openssl ca -keyfile rootCA.key -cert rootCA.crt  -revoke ../oldCert/old.pem superseded

私が試してみると、このエラーが発生します:

Using configuration from /etc/ssl/openssl.cnf
unable to load certificate
140187823251392:error:0906D06C:PEM routines:PEM_read_bio:no start line:crypto/pem/pem_lib.c:691:Expecting: TRUSTED CERTIFICATE

私はインターネット上にあるものをすべて試しましたが、同じエラーが発生するだけです。証明書を失効させてCRLを生成するにはどうすればよいですか?

2
etnguyen03

あなたのタイトルは誤解を招くものです。出力の最初の行に示されているように、デフォルトの構成ファイルを使用しています。

証明書を失効させてCRLを生成するにはどうすればよいですか?

これらは、OpenSSLでの2つの別個のステップです。

まず_openssl ca -revoke $certfile_を使用しますが、理由を指定する必要がある場合は(必要はありません)、supersededだけでなく_-crl_reason superseded_のようなフラグを使用する必要があります。この手順では、「データベース」のみを更新します(通常は_index.txt_という名前の単純なテキストファイルですが、別の方法で構成することもできます)。 CAキーと証明書ファイルが構成ファイルで指定されている場合(通常はそうする必要があります)、コマンドラインで指定する必要はありません。 (この操作は実際にはそれらを必要としませんが、それらにアクセスします。参照 OpenSSLが証明書を取り消すために秘密鍵を必要とするのはなぜですか?

「データベース」が更新された後はいつでも、_openssl ca -gencrl [options]_を使用して、現在の(更新された)コンテンツから実際にCRLを生成します。 CRL期間(日、時間、または秒)は、コマンドラインまたは構成ファイルで指定する必要があります。アップストリームのデフォルト設定では30日に設定されていますが、使用しているパッケージやその他の変更がわかりません。他のオプションはmanページに従って追加されるかもしれません。 CRLはそのキーで署名され、その証明書での検証用にマークされているため、この操作にはCAキーと証明書が必要です

この「データベース」スキームは、OpenSSLを使用するUnixyシステムのca(1ssl?)のマニュアルページの最初のテキストパラグラフで、かなり簡単に識別されます またはWeb上

Caコマンドは最小限のCAアプリケーションです。さまざまな形式で証明書要求に署名し、CRLを生成するために使用でき、発行された証明書とそのステータスのテキストデータベースも維持します。

「テキストデータベース」はindex.txtファイル(通常)であり、「[発行された証明書の]ステータス」は失効したかどうか、いつ、なぜ失効したかを示します。最初のタブ区切りフィールドが有効を表すVであるか、取り消されるを表すRであるかを示します。他の情報は3番目のフィールドにあり、かなり明白です。

2