Siguiendo con la entrada anterior, que hablaba del estándar X.509 que define la estructura del certificado; nos quedaba pendiente revisar los campos fundamentales que componen el bloque de tbsCertificate, dentro de la estructura de X.509.
Este bloque contiene la información fundamental de la PKI, como emisor, suscriptor, caducidades, etc. Se detallan los campos más relevantes a continuación:
- Version: Especifica la versión del protocolo X.509 con la que se ha construido el certificado, por ejemplo, si el certificado contuviera extensiones este campo debería contener inequívocamente el valor ‘3’.
- Serial Number (Número de Serie): Se trata de un número entero positivo que puede asignar la CA y que le permitirá identificar el certificado digital. Por lo tanto este identificador deberá ser único para cada certificado dentro de una cadena de confianza. Lo habitual es que se trate de números de módulo largo, lo que asciende a 20 octetos.
- Signature Algorithm Identifier (Identificador del Algoritmo de Firma): Este campo contiene necesariamente el algoritmo de cifrado empleado para generar la firma del suscriptor. Debe ser necesariamente el mismo que el que se emplea en la firma de validación de la cadena de confianza. Adicionalmente se consideran extensiones opcionales para este campo, que dependerán directamente del algoritmo de cifrado empleado.
- Issuer (Emisor): Este campo contiene información respecto a la Autoridad de Certificación que ha emitido el certificado digital, fundamentalmente del certificado de CA subordinada que se ha empleado para generar el certificado final. Concretamente cuenta con estos campos (para facilitar la legibilidad de la entrada nos centramos en los de mayor importancia y de uso más extendido):
- country: País donde su ubica la CA.
- organization: Nombre establecido para la CA.
- organizational unit: Campo definido para la unidad organizativa del certificado, se suele definir con un identificador de la finalidad del certificado o el departamento encargado de generarlo.
- state or province name: Nombre de estado o provincia, dependiendo de la organización del país en el que se ubica la CA.
- common name (CN): Se define como nombre común, y se define normalmente como el common name del subject del certificado de subordinada que se ha empleado para firmar el certificado.
- Locality: Ciudad donde se ubica la CA.
- NOTA: Los campos title, surname, given name, initials, pseudonym o generation qualifier, se definen también para el campo de emisor, aunque no se suelen emplear cuando quien emite el certificado es una CA (como podéis ver carecen de sentido para una entidad jurídica).
- Validity: Se trata de un campo fundamental dentro del mecanismo de uso de una PKI. Es el tiempo que se compromete la Autoridad de Certificación a disponer de información sobre la validez del certificado, lo que se traduce en consecuencia que este campo establece la vida útil del certificado. Se puede codificar empleando dos mecanismos UTCTime y GeneralizedTime.
- Subject (Suscriptor): Campo que incluye los datos del suscriptor (o usuario final) del certificado, por lo que va directamente asociado a la clave pública contenida en el mismo certificado. Del mismo modo que en el caso anterior, nos centramos en los campos fundamentales y de uso más extendido, habiendo una especificación muy extensa de posibles campos para este punto:
- Common name: Nombre asignado al certificado en concreto, depende mucho del tipo de certificado que se trate, por ejemplo en un certificado SSL lo habitual es incluir el nombre del dominio que emplea el certificado, en caso de certificados de firma suele emplearse el nombre completo de la persona.
- Serial number: Número de serie identificativo que se emplea para identificar inequívocamente un certificado emitido, este número debe ser único para cada certificado dentro de una CA.
- GivenName: Nombre propio de la persona en el caso de certificados personales.
- SurName: Apellidos de la persona para certificados personales.
- Organization unit: Puede hacer referencia al uso del certificado, o a la finalidad de la rama de la jerarquía de certificación empleada (o CA subordinada).
- Organization: Este caso es común al campo Issuer, ya que se suele poner el identificador de la CA emisora.
- Country: País de emisión del certificado.
- Subject Public Key Info: Campo definido para contener la clave pública del certificado, así como para identificar el algoritmo de cifrado empleado para su generación.
Para finalizar con la descripción de la estructura de un certificado empleando X.509, pasamos a detallar las principales extensiones empleadas en los certificados comerciales. Es importante destacar que estos campos son completamente opcionales. Son los siguientes:
- Authority Key Identifier: Campo que se emplea para identificar inequívocamente a la autoridad de certificación.
- Subject Key Identifier: Campo que se emplea para identificar inequívocamente al suscriptor.
- Key Usage: Especifica cuales son los usos válidos para el certificado, como por ejemplo si se puede emplear para firmar o para cifrar.
- Certificate Policies: Define la ubicación e identificación de la Política de Certificado definida para la subordinada que ha generado el certificado (Más información sobre Políticas de Certificación y Declaraciones de Prácticas de Certificación en esta entrada y en esta otra, ambas pertenecientes a esta serie).
- Basic Constraints: Incluye información muy importante como si el certificado es de CA, lo que permitiría que el certificado se empleara para firmar otros certificados.
- CRL Distribution Points: En esta extensión se detalla la ruta del enlace donde se pueden obtener las Listas de Revocación de Certificados (CRL) correspondientes a la subordinada que emite el certificado final, de este modo se puede automatizar la consulta de las mismas cuando se consulta el certificado.
- Authority Information Access: Del mismo modo que en el caso anterior, en esta extensión se mantiene la ruta de acceso al servicio de validación OCSP de la CA, facilitando también la automatización de la validación pudiendo obtener dicha información del propio certificado.
Con esto ya hemos revisado la estructura y principales campos de la implementación X.509 de certificados digitales. Gracias por leernos, espero que la entrada os haya resultado de utilidad, espero vuestros comentarios.
Enlaces adicionales:
http://www.ietf.org/rfc/rfc5280.txt
Muy buena la explicación :)
La verdad, no dejo de aprender con estos artículos, de hecho ahi campos que ni conocía. Saludos.
Muchas gracias Alejandro.
El estándar x.509 como marco estructural contempla una gran cantidad de información que se puede incluir en los certificados digitales para poder cubrir cualquier uso previsto. Este es un pequeño resumen de los que son a mi ver los más representativos, aunque el estándar incluye muchos más. Un cordial saludo! :)