opensslを使用して期限切れになっていますが、まだ有効な中間CAを更新する方法は?

opensslを使用して期限切れになっていますが、まだ有効な中間CAを更新する方法は?

私たちは独自のOpenVPNサーバーCAインフラストラクチャを持っています。自己署名ルートCAを作成し、OpenVPNプロセス/ネットワークごとに中間CAを作成しました。次のコマンドを使用して中間CAを生成します。

openssl req -new -batch -days 3650 -newkey rsa:2048 -nodes sha256 -keyout network.hostname.ca.key -out sign_request.csr -subj "/C=land/ST=region/L=town/O=org/OU=CAnetwork/CN=cn/emailAddress=email" -config /path/to/config
openssl ca -cert root.ca.crt -keyfile root.ca.key -in sign_request.csr -out network.hostname.ca.crt -noemailDN -md sha256 -extensions v3_ca -outdir /some/dir -config /path/to/config -batch

これで、中間CAがすぐに期限切れになる予定であり(数ヶ月以内に)、証明書を更新したいと思います。 10年前と同じコマンドを実行してこれを試しましたが、新しいキーを生成するのではなく、中間caの古いキーを使用しました(発行された証明書を有効にしたいからです!)。しかしこれは文句を言ったSerial number 01 has already been issued。シリアル番号01は、現在/賞味期限の中間製品のシリアル番号です。

既存の有効な中間CAを無視し、より長い有効期間で再生成して、新しいCAが期限切れの古いCAで生成されたクライアント証明書を検証するようにopensslに指示するにはどうすればよいですか?

答え1

CSR生成コマンドが間違っているようです。

openssl req -new -batch -days 3650 -newkey rsa:2048 -nodes sha256 -keyout network.hostname.ca.key -out sign_request.csr -subj "/C=land/ST=region/L=town/O=org/OU=CAnetwork/CN=cn/emailAddress=email" -config /path/to/config

network.hostname.ca.key という新しいキーが生成されます。実際に更新するには、既存のキーを使用する必要があります。私の考えは次のとおりです。

openssl req -new -batch -days 3650 -key network.hostname.ca.key -sha256 -out sign_request.csr -subj "/C=land/ST=region/L=town/O=org/OU=CAnetwork/CN=cn/emailAddress=email" -config /path/to/config

答え2

問題は、同じCNが2つの有効な証明書を同時に持つことができないことです。 openssl.cnfにはこれを許可するオプションがありますが、望むものではありません。 int caをキャンセルし、同じ秘密鍵と同じ属性を使用して新しい要求を生成して署名する方が良いと思いました。あなたのすべての要件を満たす必要があります

非常によく説明するこのリンクを見つけました。

https://serverfault.com/questions/306345/certification-authority-root-certificate-expiry-and-renewal

編集:より多くのコンテンツを追加しました。証明書の確認には、発行者 == int ca トピック発行者のシリアル番号 #== int ca のシリアル番号以上が含まれているようです。

したがって、同じ詳細でint caを更新するだけです。別のシリアル番号が届きます。

関連情報