¿Qué están haciendo esos nulos bytes en el certificado del sujeto CN?

6

Mientras investigaba con certificados SSL, encontré algunos certificados extraños que contenían nulos en su campo de Asunto. Un ejemplo es www.refah - bank.ir (¿el gobierno iraní falsificó esta CA? Parece muy similar a una CA española, excepto por la ubicación ...).

Otro ejemplo es mcafee.com que me parece más confiable. Tienen dos direcciones IP diferentes para mcafee.com y www.mcafee.com , el certificado también difiere. Lo que me sorprendió fue que una empresa de este tipo utiliza certificados que contienen nul bytes en su campo de Asunto:

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

La apertura mcafee.com rechazó correctamente el certificado, ya que el comodín no coincide con esto. Por curiosidad, edité mi archivo host e hice que foo.mcafee.com (y www. ) apunten a la dirección IP 161.69.13.40 (mcafee.com). Espero que un certificado de este tipo sea rechazado, pero Firefox y Chromium aceptan este certificado.

Encontré otro sitio web que tiene nulos bytes en el CN y sigue siendo "confiable": enlace

¿Qué está pasando aquí?

    
pregunta Lekensteyn 01.03.2013 - 12:52
fuente

1 respuesta

7

Este es un nombre común mal codificado. El nombre común, al igual que muchos elementos de un nombre distinguido, se puede codificar de varias maneras, incluyendo UTF8String (es decir, UTF-8) y BMPString . Este último es más o menos lo mismo que UTF-16, con dos bytes por carácter (excepto los sustitutos, de los que no hablaré aquí). Aparentemente, alguien codificó *.mcafee.com en UTF-16 de big-endian, pero se decodificó como si fuera UTF-8 (o ASCII), lo que lleva a los bytes nulos espurios. Probablemente fue etiquetado incorrectamente en el certificado.

    
respondido por el Thomas Pornin 01.03.2013 - 13:39
fuente

Lea otras preguntas en las etiquetas