web-dev-qa-db-fra.com

SSL - Comment les noms communs (CN) et les noms alternatifs de sujet (SAN) fonctionnent-ils ensemble?

En supposant que la propriété SAN (Subject Alternative Name) d'un certificat SSL contient deux noms DNS

  1. domain.tld
  2. Host.domain.tld

mais le nom commun (CN) n'est défini que sur l'un des deux: CN=domain.tld.

  • Cette configuration a-t-elle une signification particulière ou présente-t-elle des avantages [dés] par rapport à la configuration des deux CN?
  • Que se passe-t-il côté serveur si l'autre, Host.domain.tld, est demandé?

EDIT:

Comme récemment appris par Eugene dans sa réponse, que le comportement diffère selon les implémentations, je veux être plus précis: comment OpenSSL 0.9.8b + gère-t-il le scénario donné?

67
Jürgen Thelen

Cela dépend de la mise en œuvre, mais la règle générale est que le domaine est vérifié par rapport à tous les SAN et au nom commun. Si le domaine y est trouvé, le certificat est correct pour la connexion.

RFC 528 , La section 4.1.2.6 indique "Le nom du sujet PEUT être porté dans le champ" Objet "et/ou l'extension" subjectAltName "". Cela signifie que le nom de domaine doit être vérifié à la fois avec l'extension SubjectAltName et la propriété Subject (notamment son paramètre de nom commun) du certificat. Ces deux lieux se complètent et ne font pas double emploi. Et SubjectAltName est un endroit approprié pour mettre des noms supplémentaires, tels que www . Domain.com ou www2 . domain.com

Mise à jour: conformément à RFC 6125 , publiée en 2011, le validateur doit vérifier SAN d'abord, et si SAN existe, puis CN Veuillez noter que la RFC 6125 est relativement récente et qu'il existe toujours des certificats et des autorités de certification émettant des certificats, qui incluent le nom de domaine "principal" dans le CN et les noms de domaine alternatifs dans le réseau de stockage (par exemple, en excluant le CN de la validation si = SAN est présent, vous pouvez refuser un certificat par ailleurs valide.

Pour être tout à fait correct, vous devez mettre tous les noms dans le champ SAN.

Le champ CN doit contenir un nom de sujet et non un nom de domaine, mais lorsque Netscape a découvert ce type de protocole SSL, ils n'ont pas défini son plus grand marché. Simplement il n'y avait pas de champ de certificat défini pour l'URL du serveur.

Cela a été résolu pour placer le domaine dans le champ CN, et de nos jours l'utilisation du champ CN est déconseillée, mais elle est encore largement utilisée. Le CN ne peut contenir qu'un seul nom de domaine.

Les règles générales pour ceci: CN - indiquez ici votre URL principale (pour la compatibilité) SAN - indiquez tout votre domaine ici, répétez le CN car il n’est pas à la bonne place là-bas, mais il est utilisé pour cela. ...

Si vous avez trouvé une implémentation correcte, les réponses à vos questions seront les suivantes:

  • Cette configuration a-t-elle une signification particulière ou présente-t-elle des avantages sur le réglage des deux CN? Vous ne pouvez pas définir les deux CN, car le CN ne peut contenir qu'un seul nom. Vous pouvez créer 2 certificats CN simples à la place d'un certificat CN + SAN, mais vous avez besoin de 2 adresses IP pour cela.

  • Que se passe-t-il côté serveur si l'autre, Host.domain.tld, est demandé? Peu importe ce qui se passe côté serveur.

En bref: lorsqu'un client de navigateur se connecte à ce serveur, celui-ci envoie des packages chiffrés, qui sont chiffrés avec la clé publique du serveur. Le serveur déchiffre le package et si le serveur peut déchiffrer, il était chiffré pour le serveur.

Le serveur ne sait rien du client avant le déchiffrement, car seule l'adresse IP n'est pas chiffrée via la connexion. C'est pourquoi vous avez besoin de 2 adresses IP pour 2 certificats. (Oubliez SNI, il y en a trop XP encore là maintenant.)

Du côté client, le navigateur reçoit le CN, puis le SAN jusqu'à ce que tous les éléments soient cochés. Si l'un des noms correspond au site, la vérification de l'URL a été effectuée par le navigateur. (Im ne parle pas sur la vérification du certificat, bien sûr beaucoup de demandes et réponses ocsp, crl, aia se déplacent sur le net à chaque fois.)

42
Viktor Varga

Exigences de base de CABForum

Je vois personne n'a encore mentionné la section dans les exigences de base. Je pense qu'ils sont importants.

Q: SSL - Comment les noms communs (CN) et les noms alternatifs de sujet (SAN) fonctionnent-ils ensemble?
A: Pas du tout. S'il existe des SAN, le CN peut être ignoré. - Du moins si le logiciel qui effectue la vérification adhère très strictement aux exigences de base du CABForum.

(Cela signifie donc que je ne peux pas répondre à la question "Modifier" de votre question. Seule la question initiale.)

Exigences de base du CABForum, v. 1.2.5 (à compter du 2 avril 2015), page 9-1 :

9.2.2 Champs de nom distinctif du sujet
a. Champ Nom commun du sujet
Champ du certificat: subject: commonName (OID 2.5.4.3)
Obligatoire/Facultatif: Obsolète (Déconseillé, mais non interdit)
Contenu: S'il est présent, ce champ DOIT contenir une seule adresse IP ou un nom de domaine complet, qui fait partie des valeurs contenues dans l'extension subjectAltName du certificat (voir la section 9.2.1).

EDIT: Liens du commentaire de @ Bruno

RFC 2818: HTTP sur TLS, 2000, Section 3.1: Identité du serveur :

Si une extension subjectAltName de type dNSName est présente, elle DOIT être utilisée comme identité. Sinon, le champ Nom commun (le plus spécifique) dans le champ Objet du certificat DOIT être utilisé. Bien que l'utilisation du nom commun soit une pratique existante, elle est déconseillée et les autorités de certification sont encouragées à utiliser plutôt le nom de fichier.

RFC 6125: Représentation et vérification de l'identité de service d'application de domaine dans l'infrastructure de clé publique Internet à l'aide de certificats X.509 (PKIX) dans le Contexte de la sécurité de la couche de transport (TLS), 2011, Section 6.4.4: Vérification des noms communs :

[...] si et seulement si les identificateurs présentés n'incluent pas d'identificateur DNS-ID, SRV-ID, URI-ID ou tout type d'identificateur spécifique à l'application pris en charge par le client, le client PEUT alors vérifier en dernier recours une chaîne dont la forme correspond à celle d'un nom de domaine DNS complet dans un champ Nom commun du champ Objet (c'est-à-dire, un CN-ID).

10
StackzOfZtuff