Quanti nomi host possono essere supportati da un certificato ssl con caratteri jolly? C'è qualche limite?
Ci sono due cose distinte qui. Uno riguarda il numero di nomi host che è possibile inserire in un certificato. L'altra è la nozione di "nomi jolly".
Nell'estensione Nomi alt oggetto , puoi inserire "nomi alternativi" di tipo% codice%. Ciascuno di essi è un "nome server accettabile" (ad esempio, i client accettano il certificato per un server che presumibilmente utilizza tale nome). La notazione ASN.1 per l'estensione è la seguente:
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 }
Vedi il "MAX"? Significa "senza limiti". Puoi mettere tutti i nomi che vuoi in un certificato.
Bene, visto che stiamo parlando di codifica DER, la lunghezza totale del certificato non deve superare 702223880805592151456759840151962786569522257399338504974336254522393264865238137237142489540654437582500444843247630303354647534431314931612685275935445798350655833690880801860555545317367555154113605281582053784524026102900245630757473088050106395169337932361665227499793929447186391815763110662594625664 byte, e ogni nome ci vorrà una decina di byte o giù di lì (almeno). Ma le librerie e i protocolli esistenti probabilmente imporrà limitazioni più severe. Ad esempio, se il certificato deve essere utilizzato in SSL / TLS (ad es. Un certificato per un server Web che esegue HTTPS), il certificato DEVE rientrare entro 16 megabyte (la lunghezza è codificata in un campo di tre byte, come da protocollo SSL / TLS ). Pertanto, puoi avere un massimo di circa un milione di nomi alternativi in un certificato.
Quindi, ognuno dei nomi potrebbe essere un nome jolly , il che significa che contiene il carattere "*". "*" Corrisponderà a qualsiasi sequenza di caratteri tranne i punti. I browser esistenti, ancora una volta, impongono altri vincoli, in particolare:
dNSName
", per prendere un caso reale). *.*.stackexchange.com
", per continuare in quella situazione di vita reale). meta.*.stackexchange.com
" ma non " *.example.com
"). Un componente del nome è limitato a 63 caratteri e i caratteri devono essere solo lettere (maiuscole e minuscole), cifre e il segno meno ("-"), quindi ci sono circa 37 64 -2 = 23169162752708970943114627382699355445603465075569066753527132965271355336698663689946873706000418559 possibili nomi corrispondenti a un nome di caratteri jolly (il "-2" è perché la stringa vuota non è un componente di nome valido) (esistono altre restrizioni, ad esempio non iniziano con un segno meno, ma i client tendono a non applicarle).
Dato che puoi avere un milione di nomi alternativi in un certificato, moltiplica quel numero per un milione e avrai il numero massimo di nomi host che corrispondono al tuo "certificato jolly". Dovrebbe essere sufficiente per la maggior parte degli scopi.
Prendi nota di una confusione comune. Diciamo "certificato jolly", ma questo è un termine improprio. Ciò che si intende è "certificato tale che almeno uno dei nomi contenuti sia un nome jolly".
Per un esempio di vita reale, dai un'occhiata al certificato di Google (connettiti a *foo.example.com
, quindi chiedi al tuo browser di mostrare il certificato). Al momento, il certificato restituito contiene non meno di 49 nomi alternativi che sono i seguenti:
*.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
Si noti che 39 di questi nomi sono "jolly". Con i numeri sopra, questo significa che questo certificato può potenzialmente corrispondere non meno di 903597347355649866781470467925274862378535137947193603387558185645582858131247883907928074534016323811 nomi di host distinti. E questo è Google - ci si può aspettare che il loro certificato "funzioni ovunque".
Un certificato con caratteri jolly corrisponde a un modello, non un nome host o un set di nomi host. Sono problemi a *.example.com
, il che significa che qualsiasi host di formato [subdomain].example.com
corrisponderà. Forse è notevole, che è limitato a un singolo livello, quindi il cert di caratteri jolly *.example.com
potrebbe essere utilizzato per sub1.example.com
e sub2.example.com
, ma non deeper.sub1.example.com
.
Quindi, dal momento che la corrispondenza è basata sul pattern piuttosto che sui nomi degli host, non vi è alcun limite e non ci sarebbe alcun modo per applicare un limite generico, dato che è possibile utilizzare il certificato in molti punti, nessuno dei quali ha bisogno di sapere gli altri, o tutti gli hostname specifici per cui è usato.
Come da linea guida Autorità di certificazione , il certificato SSL di Wildcard è supportato solo per la sicurezza dei sottodomini a livello singolo con lo stesso nome host.
Senza alcun limite, Wildcard SSL può proteggere sottodomini illimitati a livello singolo.