web-dev-qa-db-ja.com

同じ共通名に対して複数の証明書を発行するにはどうすればよいですか?

イントラネット用の認証局を作成しています。

ルートおよび中間CAを生成し、中間CAを使用してサーバー証明書に正常に署名しました。サーバー証明書にはCN=mysite.comがあります。

今後、このサーバー証明書の有効期限が切れ、新しい証明書を発行する必要があります。ただし、同じCN=mysite.comを使用して別のCSRを作成すると、それに署名すると、

failed to update database
TXT_DB error number 2

別のCNで新しいCSRを作成すると、このエラーはなくなりますが、CNは同じである必要があります。そうしないと、ブラウザーはそれが有効であると表示しませんか?

どうすれば修正できますか?

編集:私は このガイドに従っています -リンクされたページの最後まですべてうまくいきますが、このページの手順を繰り返してsecond証明書、opensslは新しい証明書に別のCNを与えることを要求します。

SUBJ="/C=$C/ST=$ST/L=$L/O=$O/OU=$OU/CN=$CN"

# Generate CSR
echo "$PW" | openssl req \
    -config "$CAROOT/intermediate/openssl.cnf" \
    -new -sha256 -subj "$SUBJ" -passin stdin \
    -key "$PRIV_ENC" -out "$CSR_INT" >/dev/null 2>&1 ||
{
    >&2 echo "Could not openssl req";
    exit 1;
}

# Sign CSR
openssl ca \
    -config "$CAROOT/intermediate/openssl.cnf" \
    -batch -extensions server_cert \
    -days "$HTTP_DAYS" -notext -md sha256 \
    -in "$CSR_INT" -out "$CRT_INT" ||
{
    >&2 echo "Could not openssl ca";
    exit 1;
}

失敗するのはopenssl caです。

7
spraff

重複が必要ですか?従来、ブラウザとクライアントでは、サブジェクト名のCommonName field がホスト名と一致する必要がありました。最近のものでは、SubjectAlternativeName(SAN) extension のエントリが優先されます。 other フィールドを異なるように設定できます。

O=Floo Manufacturing, OU=floo server 2016, CN=www.floo.example.com
O=Floo Manufacturing, OU=floo server 2017, CN=www.floo.example.com

また、CommonName自体は一意ではありませんが、サブジェクトDNは一意です。または、最近のクライアントでは、できますwww.floo.example.comをSANに入れて、CommonNameのない一意のサブジェクトを使用します。しかし、opensslで証明書ごとにSANを実行するのは少し不便です。を参照してください。 https://security.stackexchange.com/questions/113484/followup-to-one-liner-to-create-cert-request-with-san

複製を許可するには:公式の方法

設定ファイルで$CAROOT/intermediate/openssl.cnf)から 'セクション'に移動します(オプションの空白を含む[somename]形式の行で区切られます)CA。コマンドラインで-nameを使用しなかったため、セクション名はdefault_caセクションまたはデフォルトセクション(最初の[ca]行の前の上部)の[somename]の値です。リンクの近くを見ると、おそらく[CA_default]です。行を追加

 unique_subject=no

スペースを使用し、# commentはオプションです。または、このアイテムの変更の行がすでにあるか、コメントが解除されているが、リンクの近くを見ていると、おそらくそうではありません。

システムのマニュアルページca(1ssl)またはCONFIGURATION FILE OPTIONSの the web を参照してください。

重複を許可するには:非公式な方法

Empty(切り捨て)従来のindex.txtである構成済みdatabaseファイルとリンクの近く彼らは明らかにそれを使用しています。またはそのファイルを編集し、削除したい件名の行を削除使用-しかし、この状況では、1つまたはいくつかしか持っておらず、それまたはそのすべてを再利用したいので、ファイルを空にする方が簡単です。

6

同じサブジェクトで複数の証明書を作成する場合は、次のように構成を変更できます。

[CA_default]設定のCAセクション(おそらくopenssl.cnf)で変更できます

unique_subject = no

ただし、この設定はファイルindex.txt.attrにも保存されるため、これも変更する必要があります。そうしないと機能しません。

5
phanaz