Combien de noms d'hôtes peuvent être pris en charge par un certificat SSL générique? Y a-t-il une limite?
Il y a deux choses distinctes ici. L'une concerne le nombre de noms d'hôtes que vous pouvez mettre dans un certificat. L'autre est la notion de "noms génériques".
Dans l'extension Subject Alt Names , vous pouvez mettre des "noms alternatifs" de type dNSName
. Chacun d'eux est un "nom de serveur acceptable" (c'est-à-dire que les clients accepteront le certificat pour un serveur qui utilise prétendument ce nom). La notation ASN.1 de l'extension est la suivante:
SubjectAltName ::= GeneralNames
GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
GeneralName ::= CHOICE {
otherName [0] OtherName,
rfc822Name [1] IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName [4] Name,
ediPartyName [5] EDIPartyName,
uniformResourceIdentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID [8] OBJECT IDENTIFIER }
Voir le "MAX"? Cela signifie "aucune limite". Vous pouvez mettre autant de noms que vous le souhaitez dans un certificat.
Eh bien, puisque nous parlons de DER encodage, la longueur totale du certificat ne doit pas dépasser 702223880805592151456759840151962786569522257399338504974336254522393264865238137237142489540654437582500444843247630303354647534431314931612685275935445798350655833690880801860555545317367555154113605281582053784524026102900245630757473088050106395169337932361665227499793929447186391815763110662594625664 octets, et chaque nom prendra une douzaine d'octets ou si (au moins). Mais les bibliothèques et protocoles existants sont susceptibles d'imposer des limitations plus strictes. Par exemple, si le certificat doit être utilisé dans SSL/TLS (par exemple, un certificat pour un serveur Web qui fait HTTPS), alors le certificat DOIT tenir dans les 16 mégaoctets (sa longueur est codée dans un champ de trois octets, conformément à la protocole SSL/TLS ). Ainsi, vous pouvez avoir un maximum d'environ un million de noms alternatifs dans un certificat.
Ensuite, chacun des noms peut être un nom générique , ce qui signifie qu'il contient le caractère "*". Le "*" correspondra à n'importe quelle séquence de caractères à l'exception des points. Les navigateurs existants, là encore, imposent d'autres contraintes, notamment:
*.*.stackexchange.com
", pour prendre un cas réel).meta.*.stackexchange.com
", pour continuer dans cette situation réelle).*.example.com
" mais non "*foo.example.com
").Un composant de nom est limité à 63 caractères, et les caractères doivent être uniquement des lettres (insensibles à la casse), des chiffres et le signe moins ("-"), donc il y en a environ 3764-2 = 23169162752708970943114627382699355445603465075569066753527132965271355336698663689946873706000418559 les noms possibles correspondant à un nom générique (le "-2" est dû au fait que la chaîne vide n'est pas un composant de nom valide) (il y a d'autres restrictions, par exemple, ne pas forcer ces clients à ne pas forcer le signe). .
Puisque vous pouvez avoir un million de noms alternatifs dans un certificat, multipliez ce nombre par un million, et vous aurez le nombre maximum de noms d'hôte qui correspondent à votre "certificat générique". Cela devrait suffire dans la plupart des cas.
Prenez note d'une confusion courante. Nous disons "certificat générique", mais c'est un terme impropre. On entend par "certificat tel qu'au moins un des noms contenus est un nom générique".
Pour un exemple concret, consultez le certificat de Google (connectez-vous à https://www.google.com/
, puis demandez à votre navigateur d'afficher le certificat). À l'heure actuelle, le certificat renvoyé contient pas moins de 49 noms alternatifs qui sont les suivants:
*.google.com
*.Android.com
*.appengine.google.com
*.cloud.google.com
*.google-analytics.com
*.google.ca
*.google.cl
*.google.co.in
*.google.co.jp
*.google.co.uk
*.google.com.ar
*.google.com.au
*.google.com.br
*.google.com.co
*.google.com.mx
*.google.com.tr
*.google.com.vn
*.google.de
*.google.es
*.google.fr
*.google.hu
*.google.it
*.google.nl
*.google.pl
*.google.pt
*.googleadapis.com
*.googleapis.cn
*.googlecommerce.com
*.googlevideo.com
*.gstatic.cn
*.gstatic.com
*.gvt1.com
*.gvt2.com
*.Urchin.com
*.url.google.com
*.youtube-nocookie.com
*.youtube.com
*.youtubeeducation.com
*.ytimg.com
Android.com
g.co
goo.gl
google-analytics.com
google.com
googlecommerce.com
Urchin.com
youtu.be
youtube.com
youtubeeducation.com
Notez que 39 de ces noms sont des "caractères génériques". Avec les chiffres ci-dessus, cela signifie que ce certificat peut potentiellement correspondre à au moins 903597347355649866781470467925274862378535137947193603387558185645582858131347473907928074534016323811 noms d'hôte distincts. Et c'est Google - on peut s'attendre à ce que leur certificat "fonctionne partout".
Un certificat générique correspond à un modèle et non à un nom d'hôte ou à un ensemble de noms d'hôte. C'est des problèmes pour *.example.com
, ce qui signifie tout hôte de format [subdomain].example.com
correspondra. Il est peut-être remarquable qu'il soit limité à un seul niveau, donc le *.example.com
le certificat générique peut être utilisé pour sub1.example.com
et sub2.example.com
, mais non deeper.sub1.example.com
.
Donc, puisque la correspondance est basée sur un modèle plutôt que sur des noms d'hôtes, il n'y a pas de limite, et il n'y aurait aucun moyen d'appliquer génériquement une limite, étant donné que vous pouvez utiliser le certificat à de nombreux endroits, dont aucun n'a besoin de connaître les autres, ou tous les noms d'hôtes spécifiques pour lesquels il est utilisé.
Selon Autorité de certification Directive, le certificat SSL Wildcard n'est pris en charge que pour la sécurité des sous-domaines de niveau unique avec le même nom d'hôte.
Sans limite, Wildcard SSL peut sécuriser un nombre illimité de sous-domaines de niveau unique.