Entendiendo la firma del certificado SSL

10

Estoy tratando de entender cómo funcionan el certificado y la firma SSL y la cadena de confianza.

Sé sobre root CAs y que se usan para firmar intermediate CAs que firman los certificados finales que se emiten a un sitio web. También entiendo cómo funciona la cadena de confianza y que debido a que un certificado firmado por X.com está firmado por el certificado intermedio que lo emitió y que está firmado por la CA raíz, puedo estar seguro de que me estoy conectando a X.com .

Mi pregunta es, ¿cuánto tiempo se extiende esta cadena? ¿No puedo usar X.com para firmar un certificado para otro dominio, por ejemplo, Y.com ? Si no, ¿por qué no? Si es así, no veo el propósito de la firma.

    
pregunta AnonSmith 15.07.2013 - 05:24
fuente

5 respuestas

8

Para ser aceptado como un emisor para otros certificados, un certificado de CA debe estar marcado como tal: deben contener un extensión Basic Constraints con el indicador cA establecido en TRUE . Si un cliente (por ejemplo, un navegador web) ve una supuesta cadena de certificados de servidor, con el certificado "X.com", no marcado como CA, utilizado como CA intermedio, el cliente rechazará la cadena, en aplicación del estándar algoritmo de validación de certificados, en sección 6.1.4 , paso (k):

  (k)  If certificate i is a version 3 certificate, verify that the
       basicConstraints extension is present and that cA is set to
       TRUE.  (If certificate i is a version 1 or version 2
       certificate, then the application MUST either verify that
       certificate i is a CA certificate through out-of-band means
       or reject the certificate.  Conforming implementations may
       choose to reject all version 1 and version 2 intermediate
       certificates.)

Tenga en cuenta los comentarios sobre los certificados "versión 1" y "versión 2". Los certificados modernos X.509 son "versión 3" (su campo version contiene 2, no 0 o 1). Las versiones anteriores para el formato X.509 no tenían espacio para extensiones, por lo que no hay Basic Constraints . La vulnerabilidad evidente que temía, con cualquier propietario de certificado que pudiera actuar como CA, era, sin duda, evidente. Pero a la gente le tomó varios años ponerse al día.

Afortunadamente, todas las implementaciones actuales de SSL consideran los certificados v1 y v2 como "definitivamente no CA", al igual que el certificado v3 que carece de una extensión Basic Constraints .

En una vena similar, Internet Explorer, hasta alrededor de 2003 (si recuerdo bien), no comprobó el indicador cA ... y de hecho fue un problema grave, que se solucionó rápidamente cuando se descubrió. Dice bastante acerca de X.509 que nadie lo ha probado durante bastante tiempo, porque IE ya tenía soporte SSL en 1996 y los certificados v3 estaban estandarizados a principios de 1999 (entonces, como es típico de Web, ya estaban implementados en ese momento, y el estándar era más una documentación de la práctica existente que cualquier otra cosa).

En cuanto a su pregunta específica: ¿cuánto tiempo se extiende esta cadena? No hay límite intrínseco, en el estándar X.509, sobre la longitud de la cadena, siempre y cuando todos los certificados de la cadena estén debidamente marcados como CA (excepto posiblemente el último) y tengan las firmas adecuadas y todos los campos en los certificados coincidan como Ellos deberían. Sin embargo, la certificación es delegación de confianza y la confianza se diluye muy rápido cuando se delega demasiado. Por lo tanto, las cadenas excesivamente largas son una clara indicación de que todo el proceso de PKI ha ido mal.

Además, las cadenas largas pueden alcanzar límites internos en algunas implementaciones. La construcción de la cadena (la operación que prepara las cadenas potenciales para validarse) puede resultar costosa (con certificados especialmente diseñados, puede tener un costo factorial para una longitud de cadena dada), por lo que las implementaciones deben incluir algún mecanismo de protección, que A menudo es una longitud máxima interna de la cadena. Las cadenas que se encuentran en la práctica tienen una longitud de 2 a 4 certificados (es decir, una raíz, tres CA intermedias como máximo y luego el certificado de entidad final). Mi propio código tiende a rechazar cadenas más allá de 8 certificados, y ese límite arbitrario nunca ha sido, en mi experiencia, un problema.

    
respondido por el Thomas Pornin 25.07.2013 - 22:59
fuente
4

Cuando una CA raíz firma un certificado para una CA intermedia, el certificado firmado tiene un campo especial establecido (específicamente, un indicador de autoridad de certificado en la extensión de Restricciones Básicas ), que lo designa como un certificado de CA. Los certificados firmados para dominios, como los obtendría de su CA, no tienen este campo establecido, por lo que su navegador no los considerará para la cadena de certificados de confianza que regresan a la CA raíz.

    
respondido por el David 15.07.2013 - 07:04
fuente
1
  

¿Cuánto tiempo se extiende esta cadena?

No hay un límite especificado, pero los clientes (navegadores, programas de correo, etc.) pueden tener algún límite interno en cuanto a cuántos saltos están dispuestos a seguir.

  

No puedo usar X.com para firmar un certificado para otro dominio, diga Y.com. Si no, ¿por qué no? Si es así, no veo el propósito de la firma.

No, ya que el certificado de X.com no está marcado como certificado de firma.

O, mejor dicho: sí, podría , la tecnología subyacente no impide que lo haga. Pero los navegadores están programados para verificar la restricción básica CA: true para todos los certificados de firma e intermedios, y no confiarán en la firma si eso no es cierto.

Convencer a una CA de firmar un certificado intermedio para usted no es una tarea fácil, ya que están apostando su reputación en la afirmación de que usted no firmará nada que no deba ser firmado. No es una pequeña garantía.

    
respondido por el tylerl 26.07.2013 - 02:39
fuente
1

Lamentablemente, X.com no puede firmar Y.com por motivos de seguridad. Tomemos el siguiente ejemplo:

  1. Mallory está intentando realizar un ataque MITM a Alice y Bob. Es propietario de un certificado válido firmado por Verisign para Z.com.
  2. Alice envía el certificado válido para X.com a Bob, firmado por Verisign.
  3. Mallory intercepta esa conexión, firma un certificado para X.com con su certificado para Z.com y lo envía a Bob.
  4. Ahora Mallory puede descifrar todos los datos provenientes de Bob porque tiene la clave privada para el certificado que envió, firmado por Z.com.
respondido por el Java Is Cool 20.11.2014 - 05:01
fuente
0

Respondiendo directamente a tu pregunta, NO. En tu caso dado la cadena no se extenderá. Para validar un certificado dado, el navegador debe verificar la firma de la AC en el certificado. Esto se hace usando la clave pública (certificado digital) de la CA. Los navegadores se envían con estos certificados de CA ya instalados (es posible instalar manualmente un certificado en un navegador)

Si usa el certificado de X.com para firmar un certificado para otro dominio Y.com , los navegadores no podrán validar su certificado porque no se encuentra en la lista de CA confiables y se emitirá una advertencia de seguridad.

Básicamente, los certificados se utilizan para verificar la autenticidad del servidor. Esto es necesario para prevenir ataques MITM. De lo contrario, un atacante podría afirmar que es el servidor real y que su navegador enviaría con gusto mensajes cifrados con la clave privada del atacante. Por lo tanto, solo los certificados firmados por CA confiables son de confianza para el navegador.

    
respondido por el Shurmajee 15.07.2013 - 06:22
fuente

Lea otras preguntas en las etiquetas