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.
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.
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.