URIs en la extensión subjAltName X.509

2

La extensión subjAltTag para certificados X.509 puede incluir nombres de dominio, direcciones de correo electrónico, URI, etc. Estaba jugando con un X.509 cuyo subjAltTag solo tenía un URI y no parece funcionar. Aquí hay una captura de pantalla:

El URI en la barra de direcciones, en la parte superior, es el mismo URI en el certificado. Actualicé mi archivo de hosts para apuntar www.google.com a localhost. Ellos certifican que el certificado de google.com ha renunciado.

Mi pregunta es ... ¿por qué no funciona? ¿Los navegadores solo admiten nombres de dominio?

Se adjuntan el certificado X.509 y su clave privada RSA correspondiente:

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCaSBi+M4Gl/qWFOM24QrioNLplsW0MwLH/jDpWdckJIm979pPv/qUt6MUNgq7r
Di87poo6j8Ak726He6Br1bNJoRiTzHtbHqAFVgNp4Cxv5pade8zr4qBX8j9Pl76oq/MB2Yfcg7Rb
N/kblPBlsLwWNfrBt2nLZgn47pccUioNsQIDAQABAoGAFGJgOoktoRQDJJX7wFO4eCj3U8ZchSnU
mtIZRyEq3bUaC8PpifUYN/egSYexusbWAMihTNl/ZqHn9aik6nqCxIqYxgx9grybGOBo36qJzFSC
cszNWeEd1VAi7gJBHSZlSWhOrEHM0faYXh+DRisVTGSnmRsNIltu7Havf5KXua0CQQD9rJRF3lSB
ci3/d5c3Z+S52Lkv1zIvHhsFOYn39LCJVSUv9ufok5d2ktgFlYcVhsdr4La9ks4L8jQeiWQaWqiX
AkEAm7I5foaUX3P71dvaIH2fPXPLMF8h9jcK37YXTkaSeh1waKPUofSDcK2kJq86EZI3HA4bGVk9
QPvzmHGUzAI89wJBAMob0Pqlu+ByjzFmH+W18eccQ9dY9hPSQab1A/a5Tlnsq7c+WeDUjq2bK1+v
lbPR8VsC67W4nE+qRlo6DrZsmrsCQF36V+XdSdXL5miRybnu2Z14NV8/LPq3AqNCABNJWcTH3D/t
E72mH2h2By0qe3x7qzQN96F3UhfVfJW5iT0S5MUCQFhYfOylO4Yi13hpjOQb8M31sCKZUBUJIipP
c/8PFDyfJiTt61ZiMnYgIst5T2ai98S8+XZZwEvxNyu1uiQ2tbI=
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDaDCCAtOgAwIBAgIBCTALBgkqhkiG9w0BAQUwazELMAkGA1UEBgwCVVMxEzARBgNVBAgMCkNh
bGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEzARBgNVBAoMCkdvb2dsZSBJbmMxGjAY
BgNVBAMMEXd3dy5mcm9zdGplZGkuY29tMB4XDTEyMDMyMTE2MzcyM1oXDTEzMDQyMTE2MzcyM1ow
azELMAkGA1UEBgwCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZp
ZXcxEzARBgNVBAoMCkdvb2dsZSBJbmMxGjAYBgNVBAMMEXd3dy5mcm9zdGplZGkuY29tMIGdMAsG
CSqGSIb3DQEBAQOBjQAwgYkCgYEAmkgYvjOBpf6lhTjNuEK4qDS6ZbFtDMCx/4w6VnXJCSJve/aT
7/6lLejFDYKu6w4vO6aKOo/AJO9uh3uga9WzSaEYk8x7Wx6gBVYDaeAsb+aWnXvM6+KgV/I/T5e+
qKvzAdmH3IO0Wzf5G5TwZbC8FjX6wbdpy2YJ+O6XHFIqDbECAwEAAaOCASAwggEcMAwGA1UdEwEB
/wQCMAAwOQYDVR0fAQEABC8wLTAroCmgJ4YlaHR0cDovL2NybC50aGF3dGUuY29tL1RoYXd0ZVNH
Q0NBLmNybDArBgNVHSUBAQAEITAfBggrBgEFBQcDAQYIKwYBBQUHAwIGCWCGSAGG+EIEATB1Bggr
BgEFBQcBAQEBAARmMGQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0ZS5jb20wPgYIKwYB
BQUHMAKGMmh0dHA6Ly93d3cudGhhd3RlLmNvbS9yZXBvc2l0b3J5L1RoYXd0ZV9TR0NfQ0EuY3J0
MC0GA1UdEQEBAAQjMCGGH2h0dHBzOi8vd3d3Lmdvb2dsZS5jb20vYXNkZmFzZGYwCwYJKoZIhvcN
AQEFA4GBAEWifm73z2rOJd9Io7egHEFRG+GNpUi+owYnSM07cStlwKg0UXesKxEO9Pud942WqwIt
TJUpYuUWyLupMh7R5ZfbrYsFfohwKqctKZLt/0+Lup2SNHDk79mJ0bsEql7ktMmSCSVE7AHt4j2t
hYm2aSTho/PLcjknV7Ul60csqVXJ
-----END CERTIFICATE-----

Aquí están los errores específicos que Firefox me está dando:

The certificate is not trusted because it is self-signed.
The certificate is not valid for any server names.

¿Alguna idea?

    
pregunta compcert 21.04.2012 - 18:50
fuente

1 respuesta

4

Al realizar una conexión HTTPS, las reglas utilizadas para verificar la identidad del servidor siguen siendo las que se dan en RFC 2818 (Sección 3.1) :

  

Si una extensión subjectAltName de tipo dNSName está presente, esa DEBE
  ser utilizado como la identidad. De lo contrario, el nombre común (más específico)
  DEBE usarse el campo en el campo Asunto del certificado. Aunque
  el uso del Nombre Común es una práctica existente, está en desuso y   Se recomienda a las autoridades de certificación que usen el dNSName en su lugar.

     

[...]

     

En algunos casos, el URI se especifica como una dirección IP en lugar de una   nombre de host En este caso, el iPAddress subjectAltName debe estar presente
  en el certificado y debe coincidir exactamente con la IP en el URI.

En su certificado, no hay ninguna extensión de Nombre alternativo del sujeto (SAN) del tipo DNS ( dNSName ). Por lo tanto, se remonta al nombre común del sujeto DN.

Una especificación más reciente ( RFC 6125 ) armoniza el procedimiento de verificación del nombre de host en otros protocolos. Sin embargo, aún no está implementado ampliamente.

Permite el uso de URI y dice esto (entre otras cosas):

  

[...] Por lo tanto esto         documento discute los Identificadores Uniformes de Recursos [URI] solo como un         forma de comunicar un nombre de dominio DNS (a través del componente URI "host")         o su equivalente), no como una forma de comunicar otros aspectos de un         Servicio como un recurso específico (a través del componente URI "ruta")         o parámetros (a través del componente "consulta" URI).

Esencialmente, solo el esquema y el nombre de host se usan realmente desde esa URI. Esto significa que es solo más específico que una entrada de SAN DNS al limitar el uso a un determinado protocolo (ni siquiera el puerto, por lo que puedo ver en una lectura rápida).

Esta especificación solo se finalizó hace aproximadamente un año, lo cual no es tan largo. No está claro cuán ampliamente será adoptado. Para aclarar y armonizar las prácticas existentes, vale la pena el esfuerzo, pero supongo que las CA y los implementadores deberían conocerlo mejor y encontrar una demanda para emitir certificados con SAN URI, ya que no se corresponde con la especificación utilizada anteriormente (RFC 2818). Supongo que habría poca demanda por parte de los proveedores de servicios, ya que, de todos modos, pocos clientes lo admiten.

Muchos navegadores no implementan completamente RFC 2818 tal como es (por ejemplo, son más indulgentes con las direcciones IP en el CN del nombre del sujeto, sin SAN).

(Como nota al margen, desde el punto de vista del certificado de cliente, puede interesarle la WebID proyecto , que explora otras formas distintas de PKIX de verificar un certificado de cliente y hacer uso de URI en la SAN.)

    
respondido por el Bruno 21.04.2012 - 20:52
fuente

Lea otras preguntas en las etiquetas