Cómo leer un certificado X509

Un certificado digital es un archivo que suele tener una serie de datos para identificar a una persona u organización en Internet.

"Un certificado digital o certificado electrónico es un fichero informático firmado electrónicamente por un prestador de servicios de certificación, considerado por otras entidades como una autoridad para este tipo de contenido, que vincula unos datos de verificación de firma a un firmante."
Wikipedia, Certificado digital

Atributos de un certificado

Datos del propietario del certificado
  • CN: Nombre.
  • E: Email.
  • T: Localidad
  • ST: Provincia de residencia.
  • O: Organización a la que pertenece.
  • OU: Unidad organizacional.
  • C: País.
  • STREET: Dirección postal.
  • ALL: Nombre completo.

Datos del emisor del certificado

  • CN: Nombre.
  • E: Email.
  • T: Localidad.
  • ST: Provincia de residencia.
  • O: Organización.
  • OU: Unidad organizacional.
  • C: País.
  • STREET: Dirección postal.
  • ALL: Nombre completo
  • Serial: Número de serie del certificado.

Los certificados tienen más atributos de los que están listados aquí, en mi experiencia estos datos son los más comunes durante la validación de un certificado. La cantidad de atributos dependerá del fin para el cual fue emitido.

Nos concentraremos en certificados de clave publica, este tipo suele tener tres componentes que conforman una sola unidad:


  • Clave publica. Contiene la información visible con los datos del propietario, emisor, algoritmos de implementación, tamaño del certificado, fechas de inicio y fin de vigencia.
  • Clave privada. La clave privada asociada a la parte publica debe resguardarse bajo responsabilidad del propietario ya que la implementación de certificados suele ser para firmar electrónicamente documentos, autenticación de servicios para acceso a información controlada.
  • Contraseña. Cadena de caracteres que dan acceso a la llave privada.

Clase X509Certificate2

La clase X509Certificate2 representa un certificado y proporciona el acceso su información.

Implementación

Consulta la siguiente información de un certificado de prueba emitido por el SAT proporcionados para realizar pruebas de facturación electrónica.

  • GetEffectiveDateString: Fecha efectiva del certificado.
  • GetExpirationDateString: Fecha de expiración del certificado.
  • GetSerialNumber: Devuelve el número de serie del certificado en formato hexadecimal.
  • Issuer: Nombre de la entidad de certificación que emitió el certificado.
  • HasPrivateKey: Indica si el certificado incluye la llave privada.
  • Subject: Nombre del propietario.
  • Thumbprint: Huella digital del certificado.
  • Export: Método que exporta el certificado como una matríz de bytes.
Datos del certificado utilizado en el ejemplo:
Algoritmo de firma SHA256RSA
Algoritmo hash de firma: SHA256
Clave publica: RSA (2048 bits)

Figura 1: Datos consultados de un CSD


Descarga el ejemplo y un CSD de prueba dando click aquí


Referencias

IBM, Certificados digitales - Consultado el 01/09/2018.

UPV, ¿Qué es un certificado digital? - Consultado el 01/09/2018.

Microsoft, Clase X509Certificate2 - Consultado el 01/09/2018.

Entradas más populares de este blog

Validación Xml tipo CFDI contra su XSD en C#

Lectura de archivos XML - XmlDocument