web-dev-qa-db-ja.com

OpenSSL CAを使用した重複証明書の生成

社内では、多くの内部サーバーに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という名前を付ける必要があります。

3
garethTheRed