web-dev-qa-db-ja.com

証明書を持っていないときにopenssl証明書を取り消す方法

ローカルマシンで作成されたCAによって署名されたopenssl証明書を作成しました。

この証明書は削除されたので、もう持っていません。

Opensslでは許可されず、エラーが生成されるため、同じcommonNameで別の証明書を作成することはできません。

failed to update database
TXT_DB error number 2

証明書を失効させて、同じcommonNameを持つ別の証明書を作成するにはどうすればよいですか?

50
leszek.hanusz

Nilesh's answer に基づく)デフォルトの構成では、opensslはすべての署名済み証明書のコピーをインデックス番号で命名された/etc/ssl/newcertsに保持します。したがって、grep /etc/ssl/index.txtを使用して、失効させるキーのシリアル番号を取得します。 1013、次のコマンドを実行します。

openssl ca -revoke /etc/ssl/newcerts/1013.pem #replacing the serial number

Nileshの回答に記載されている-keyfile-certは、openssl.cnf設定から逸脱する場合にのみ必要です。


または、/etc/ssl/index.txt.attrを変更して次の行を含めることもできます。

unique_subject = no

同じ共通名を持つ複数の証明書を許可します。ただし、元の証明書を公開している場合は、OSCPサーバーを実行していないか、CRLを提供していない場合でも、古い証明書を取り消すことをお勧めします。

70
Tobias Kienzler

私はこれを試していませんが、このようなものが必要なようです。

openssl ca -revoke bad_crt_file -keyfile ca_key -cert ca_crt

opensslは、newcertsディレクトリに証明書のコピーを自動的に保存します。証明書を取得するためにチェックすることをお勧めします。残念ながら、取り消すには証明書が必要です。詳細については、以下を参照してください。 http://www.mad-hacking.net/documentation/linux/security/ssl-tls/revoking-certificate.xml

7
Nilesh