it-swarm.dev

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

Per quanto ne so, un certificato SSL per *.example.com va bene per foo.example.com e bar.example.com, ma no foo.bar.example.com.

I certificati con caratteri jolly non possono avere *.*.example.com come soggetto. Immagino che ciò sia dovuto al fatto che certificati come example.* non sono consentiti: consentire ai caratteri prima che il carattere jolly possa portare un utente malintenzionato ad abbinare il proprio certificato al dominio errato.

Tuttavia, non vedo alcun problema nel consentire i certificati di *.example.com varietà da applicare a tutti i sottodomini, compresi i sottodomini a una profondità infinita. Non vedo alcun caso d'uso in cui i sottodomini di un sito sono "fidati", ma i sottodomini non lo sono.

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

Qual è il ragionamento, se esiste, dietro la limitazione *.example.com solo per i sottodomini a profondità singola?

Domanda bonus: allo stesso modo, c'è un motivo dietro il divieto generale dei personaggi prima di un jolly? Dopotutto, se si consentono solo punti e asterischi prima di un carattere jolly, non è possibile falsificare il sito di un dominio diverso.

47
Manishearth

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

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

Quindi i browser Web applicheranno restrizioni che RFC 6125 tenta almeno di documentare. La maggior parte delle RFC sono pragmatiche: se la realtà non corrisponde alle specifiche, modifica le specifiche, non la realtà. Tieni presente che i browser applicheranno anche regole extra, come vietare "*.co.uk "(non tutti i browser usano le stesse regole e non sono nemmeno documentati).

La CA professionale entra anche nella danza con i propri vincoli, come i test di verifica dell'identità prima di emettere certificati o semplicemente la riluttanza a rilasciare certificati jolly troppo ampi: il core business di una CA professionale è vendere molti I certificati e i caratteri jolly non sono di aiuto. Anzi, al contrario. Le persone vogliono acquistare certificati con caratteri jolly proprio per evitare di acquistare molti certificati individuali.


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

Sfortunatamente, qualsiasi cosa tu faccia con i certificati X.509 è completamente inutile se le implementazioni distribuite (ovvero i browser Web) non lo supportano e i browser esistenti non supportano i vincoli di nome. Non lo fanno, perché non esiste un certificato con vincoli di nome da elaborare (quindi sarebbe un codice inutile) e non esiste un tale certificato poiché i browser Web non sarebbero in grado di elaborarli comunque. Per bootstrap cose, qualcuno deve iniziare il ciclo, ma i fornitori di browser attendono che la CA professionale e la CA professionale non siano disposte per supportare i vincoli di nome, per le stesse ragioni di prima (che tutti finiscono per soldi, a lungo termine).

22
Thomas Pornin

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

Le specifiche per le tecnologie applicative esistenti non sono chiare o coerenti sulla posizione consentita del carattere jolly.

...

Queste ambiguità potrebbero introdurre differenze sfruttabili nel comportamento del controllo dell'identità tra le implementazioni del client e richiedere algoritmi di controllo dell'identità eccessivamente complessi e inefficienti.

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

6
drak