Perché non sono consentiti i certificati jolly a profondità infinita?

45

Per quanto posso dire, un certificato SSL per *.example.com è valido per foo.example.com e bar.example.com , ma non foo.bar.example.com .

I certificati con caratteri jolly non possono avere *.*.example.com come soggetto. Immagino che ciò sia dovuto al fatto che i certificati come example.* non sono consentiti, consentendo ai caratteri che il carattere jolly può comportare che un utente malintenzionato corrisponda al proprio certificato con il dominio sbagliato.

Tuttavia, non vedo alcun problema nel consentire ai certificati della varietà *.example.com di applicarsi a tutti i sottodomini, inclusi i sottodomini secondari a una profondità infinita. Non vedo alcun caso d'uso in cui i sottodomini di un sito sono "attendibili" ma i sottodomini secondari non lo sono.

Questo probabilmente causa molti problemi. Per quanto ne so, non c'è modo di ottenere in modo pulito i certificati per tutti i sottodomini secondari; o diventi CA o acquisti certificati per ogni sottodominio.

Qual è il motivo, se esiste, dietro la restrizione di *.example.com ai sottodomini a profondità singola?

Domanda bonus: allo stesso modo, c'è una ragione dietro al divieto generale dei personaggi prima di un jolly? Dopo tutto, se consenti solo punti e asterischi prima di un carattere jolly, non è possibile che il sito di un dominio diverso possa essere falsificato.

    
posta Manishearth 22.06.2013 - 23:33
fonte

2 risposte

20

Tecnicamente, l'utilizzo di caratteri jolly è definito in RFC 2818 , che fa consente nomi come " *.*.example.com " o " foo.*.bar.*.example.com " o anche " *.*.* ". Tuttavia, tra teoria e pratica, possono esserci, diciamo, differenze pratiche (teoria e pratica coincidono perfettamente solo in teoria, non in pratica). I browser Web hanno implementato regole più rigide, perché:

  • L'implementazione della corrispondenza con caratteri jolly multilivello richiede ben cinque minuti in più rispetto all'implementazione della corrispondenza dei nomi con un singolo carattere jolly.
  • I fornitori di browser non si fidavano della CA esistente per mai che emettevano un certificato " *.*.com ".
  • Gli sviluppatori sono esseri umani, quindi molto bravi a non vedere ciò che non possono immaginare, quindi i nomi multi-carattere non sono stati implementati da persone che non si rendevano conto che erano possibili.

Quindi i browser Web applicheranno restrizioni, che RFC 6125 cercano almeno di documentare. La maggior parte delle RFC è pragmatica: se la realtà non corrisponde alle specifiche, modifica le specifiche, non la realtà. Nota che i browser applicheranno anche regole extra, come proibire " *.co.uk " (non tutti i browser usano le stesse regole, anche se non sono documentati).

Anche le CA professionali entrano nella danza con i propri vincoli, come i test di verifica dell'identità prima di emettere certificati, o semplicemente riluttanza a emettere certificati jolly troppo ampi: il core business di una CA professionale è vendere molti certificati e certificati con caratteri jolly non sono d'aiuto. Al contrario, in effetti. Le persone vogliono acquistare certificati jolly proprio per evitare l'acquisto di molti singoli certificati.

Un'altra teoria che non è riuscita a metterla in pratica è Name Constraints . Con questa estensione X.509, è possibile che una CA rilasci un certificato per una CA secondaria, limitando tale CA secondaria in modo che possa emettere certificati server solo in una determinata struttura di dominio. Un'estensione Name Constraints con una "sottostruttura esplicita" di valore " .example.com " consentirebbe www.example.com e foo.bar.example.com . In quel modello, il proprietario del dominio example.com eseguiva la propria CA, limitata dalla sua über-CA ai soli nomi nella sottostruttura example.com . Sarebbe bello e dandy.

Sfortunatamente, qualsiasi cosa tu faccia con i certificati X.509 è completamente inutile se le implementazioni implementate (cioè i browser Web) non la supportano ei browser esistenti non supportano i vincoli di nome. Non lo fanno, perché non esiste un certificato con i vincoli dei nomi da elaborare (quindi sarebbe un codice inutile), e non esiste un tale certificato perché i browser Web non sarebbero in grado di elaborarli comunque. Per eseguire il boot delle cose, qualcuno deve avviare il ciclo, ma i produttori di browser attendono dopo la CA professionale e le CA professionali non sono disposte a supportare i vincoli dei nomi, per gli stessi motivi precedenti (che si riducono a alla lunga).

    
risposta data 23.07.2013 - 19:43
fonte
6

Come accennato nei commenti, RFC6125 lo spiega abbastanza bene (estratto da sezione 7.2 )

Specifications for existing application technologies are not clear or consistent about the allowable location of the wildcard character.

...

These ambiguities might introduce exploitable differences in identity checking behavior among client implementations and necessitate overly complex and inefficient identity checking algorithms.

Quindi, fondamentalmente questo comportamento viene applicato per semplificare il controllo, aumentando così la sicurezza.

    
risposta data 29.06.2013 - 01:04
fonte

Leggi altre domande sui tag