web-dev-qa-db-fra.com

Comment publier plusieurs certificats pour le même nom commun?

Je crée une autorité de certification pour un intranet.

J'ai généré une CA racine et intermédiaire et j'ai signé avec succès un certificat de serveur à l'aide de l'autorité de certification intermédiaire. Le certificat de serveur a CN=mysite.com.

À l'avenir, ce certificat de serveur expirera et je devrai émettre un nouveau. Cependant, si je crée un autre CSR avec le même CN=mysite.com alors quand je le signe je reçois

failed to update database
TXT_DB error number 2

Cette erreur disparaît si je crée un nouveau CSR avec un CN différent, mais le CNS doit être identique ou le navigateur ne dira que c'est valable, non?

Comment puis-je réparer ça?

Edit: Je suive ce guide - Tout va bien jusqu'à la fin de la page liée, mais lorsque j'essaie de répéter les étapes de cette page pour créer un Deuxième Certificat, OpenSSL demande que je donne le nouveau certificat un CN différent.

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;
}

C'est le openssl ca qui échoue.

7
spraff

avez-vous besoin de dupes? Les navigateurs et les clients traditionnellement requis pour que le nom communname champ du nom du sujet correspondre au nom d'hôte; Les modernes préfèrent qu'une entrée dans le sujetAlternatinoname (san) extension le faire. Vous pouvez définir Autres champs pour différer selon E.G.

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

et le sujet DNS est unique, même si leonname en soi n'est pas. Ou avec des clients modernes, vous pourrait Mettez www.floo.example.com dans SAN et utilisez des sujets uniques sans nom de commun. Mais obtenir OpenSSL pour faire Per-Cert SAN est un peu gênant; voir par exemple https://security.stackexchange.com/questions/113484/followup-a-one-liner-a-create-cert-request-with-san

Autoriser des dupes: la voie officielle

Dans votre fichier de configuration (qui est $CAROOT/intermediate/openssl.cnf) accédez à la "section" (délimitée par des lignes du formulaire [somename] avec espaces optionnels) Pour votre CA. Puisque vous n'avez pas utilisé -name sur la commande Commandline, le nom de la section est la valeur de default_ca dans la section [ca] ou la section par défaut (en haut avant la première [somename] ligne); En regardant près de votre lien, c'est probablement [CA_default]. Ajouter une ligne

 unique_subject=no

avec espacement et suivant # comment facultatif. Ou si vous avez déjà une ligne pour cet article, changez et/ou décotez-le, mais vous regardez près de votre lien, vous ne le faites probablement pas.

Voir Homme Page ca(1ssl) sur votre système ou le Web Sous Options de fichier de configuration.

Autoriser des DuPes: la manière non officielle

vide (tronquer) le fichier configuré database qui est classiquement index.txt et en regardant près de votre lien, ils utilisent apparemment cela. o Modifier ce fichier et Supprimer la ligne (s) pour le sujet que vous souhaitez réutiliser - mais dans cette situation, il semble que vous n'en avez qu'un ou quelques-uns et vous voulez la réutiliser ou tous, alors vider le fichier est plus simple.

6
dave_thompson_085

Si vous souhaitez créer plusieurs certificats avec le même sujet, vous pouvez modifier votre configuration comme celle-ci:

Vous pouvez changer dans la section CA (probablement [CA_default]) dans ton openssl.cnf le réglage

unique_subject = no

Mais ce paramètre est également enregistré dans le fichier index.txt.attr, vous devez aussi changer cela aussi. Sinon, cela ne fonctionnera pas.

5
phanaz