社内では、多くの内部サーバーにopenssl
を使用して(いくつかの簡単なスクリプトを使用して)自分で生成したSSL証明書があります。生成は正常に機能しますが、その後の処理には改善が必要です。その結果、サーバーのSSL証明書の暗号化されていないコピーが失われました。結果は、新しい証明書を作成してそれを展開するために時間を費やす必要があるということだけですが、これが問題を引き起こします。
internal.server.company
の新しいSSL証明書を作成しようとすると、opensslがプロセスの最後で失敗します。
failed to update database
TXT_DB error number 2
データベースにはそのホストの証明書がすでに存在するためです。
古い証明書の有効期限が切れていた場合、openssl ca -updatedb
はそれをデータベースから削除すると信じていますが、そうではありません。
エディタで(関連)index.txt
を開き、internal.server.company
を検索して見つかった行を削除することで回避できますが、ハックのようです。 opensslに、すでに証明書があると思う名前の新しい証明書を作成したいことを受け入れさせる良い方法はありますか?
データベースと同じフォルダー(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
という名前を付ける必要があります。