Che cosa fanno quei byte nul in oggetto certificato CN?

6

Mentre facevo qualche ricerca con i certificati SSL, ho trovato alcuni strani certificati contenenti nul byte nel loro campo Oggetto. Un esempio è www.refah - bank.ir (il governo iraniano ha falsificato questo CA? Sembra molto simile a un CA spagnolo eccetto per la posizione ...).

Un altro esempio è mcafee.com che sembra più affidabile per me. Hanno due diversi indirizzi IP per mcafee.com e www.mcafee.com , anche il certificato differisce. Ciò che mi ha sorpreso è che una società del genere utilizza certificati contenenti nul byte nel campo Oggetto:

Data:
    Version: 3 (0x2)
    Serial Number:
        c8:e6:3c:67:a8:7f:38:ba:c9:ab:06:ef:4e:68:67:0d
Signature Algorithm: sha1WithRSAEncryption
    Issuer: O=Network Associates, OU=NAI Certificate Services, CN=NAI SSL CA v1
    Validity
        Not Before: Aug 26 20:36:38 2008 GMT
        Not After : Apr 26 09:28:50 2019 GMT
    Subject: C=US, ST=Texas, L=Plano, O=McAfee, Inc, OU=IIS-Plano, CN=\x00*\x00.\x00m\x00c\x00a\x00f\x00e\x00e\x00.\x00c\x00o\x00m

L'apertura di mcafee.com ha rifiutato correttamente il certificato in quanto il carattere jolly non corrisponde a questo. Per curiosità, ho modificato il mio file host e reso foo.mcafee.com (e www. ) puntato all'indirizzo IP 161.69.13.40 (mcafee.com). Mi aspetto che un tale certificato venga rifiutato, ma Firefox e Chromium accettano entrambi questo certificato.

Ho trovato un altro sito Web che ha nul byte nel CN ed è ancora "trusted": link

Che cosa sta succedendo qui?

    
posta Lekensteyn 01.03.2013 - 12:52
fonte

1 risposta

7

Questo è un nome comune mal codificato. Il nome comune, come molti elementi di un nome distinto, può essere codificato in diversi modi, tra cui UTF8String (che è UTF-8) e BMPString . Quest'ultimo è più o meno lo stesso di UTF-16, con due byte per carattere (tranne i surrogati, di cui non parlerò qui). Apparentemente, qualcuno ha codificato *.mcafee.com in big-endian UTF-16, ma è stato decodificato come se fosse UTF-8 (o ASCII), portando ai byte null spuri. Probabilmente è stato taggato in modo errato nel certificato.

    
risposta data 01.03.2013 - 13:39
fonte

Leggi altre domande sui tag