職場では、多くの内部サーバーには、openssl
単純なスクリプトで直接生成されたSSL証明書があります。生成は正常に機能しましたが、後続の処理には改善が必要だったため、サーバーSSL証明書の暗号化されていないコピーがすべて失われました。その結果、新しい証明書を作成して展開するのに時間がかかりますが、これによって問題が発生します。
新しいSSL証明書を生成しようとすると、internal.server.company
プロセスの終わりにopensslが失敗します。
failed to update database
TXT_DB error number 2
これは、ホストの証明書がすでにデータベースに存在するためです。
古い証明書が期限切れになった場合、データベースから削除されると思いますopenssl ca -updatedb
が、そうではありません。
エディタで(関連)アイテムを開き、見つかった行を検索index.txt
しinternal.server.company
て削除することでこの問題を解決できますが、これはハッキングのように見えます。すでに証明書があると思われる名前の新しい証明書を生成することをopensslが受け入れるための良い方法はありますか?
答え1
データベースとindex.txt
同じフォルダにファイル(ファイル)を作成し、index.txt.attr
次のコンテンツを追加します。
unique_subject = no
データベースファイルがどこにあるかわからない場合は、openssl.cnf
次のように使用しているファイルを確認してください。
[ CA_default ]
dir = ./demoCA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt
上記の例では、データベースはにあり、上にありindex.txt
ます。したがって、新しいファイルをに./demoCA
入れる必要があります。index.txt.attr
./demoCA
データベースファイル名がそのままの場合は、index
新しいファイルの名前を指定する必要がありますindex.attr
。