Volver al inicio

Certificados X.509: ASN.1 y generación

El artículo desglosa la estructura de los certificados X.509 en ASN.1, tipos de validación (DV/OV/EV), jerarquía de cadenas. Se proporcionan comandos para generación con openssl (ECC/RSA), keytool y certbot. Para dev senior: extensiones OID, codificación DER/BER.

Guía X.509: desde ASN.1 hasta claves ECC
Advertisement 728x90

Certificados X.509: Estructura, Tipos y Generación para Desarrolladores

Los certificados X.509 son la base de la Infraestructura de Clave Pública (PKI), ya que contienen claves públicas y datos del titular. Este estándar se remonta a X.500 DAP, ahora mayormente reemplazado por LDAP. Todas las estructuras se definen en ASN.1 —un metalenguaje para serialización de datos— con codificación según las reglas BER, CER, DER de X.690 o XER.

Estructura básica de TBSCertificate:

Certificate ::= SEQUENCE {
    tbsCertificate TBSCertificate,
    signatureAlgorithm AlgorithmIdentifier,
    signatureValue BIT STRING
}

TBSCertificate ::= SEQUENCE {
    version [0] EXPLICIT Version DEFAULT v1,
    serialNumber CertificateSerialNumber,
    signature AlgorithmIdentifier,
    issuer Name,
    validity Validity,
    subject Name,
    subjectPublicKeyInfo SubjectPublicKeyInfo,
    issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL
}

En ASN.1, SEQUENCE es como una struct en C. Para detalles de sintaxis, consulta X.680 (2008). Los certificados sirven principalmente como contenedores de claves públicas. También verifican la propiedad de dominios o identidades, aunque la fiabilidad varía.

Google AdInline article slot

Jerarquía y Tipos de Certificados

Las cadenas de confianza van desde la CA raíz hasta la entidad final.

  • Raíz: Emisor igual al titular, basicConstraints.cA = TRUE.
  • Intermedio: Firmado por una CA superior, construyendo la cadena.
  • Entidad final: No firma a otros; usado por sistemas finales.

Por nivel de validación:

  • DV (Validación de Dominio): Comprobación automática del dominio vía email o desafío HTTP.
  • OV (Validación de Organización): Verifica WHOIS, registro, contactos —tarda unos días.
  • EV (Validación Extendida): Auditoría completa del negocio, derechos exclusivos sobre el dominio, autorización. Se muestra como barra verde con nombre de la empresa. Requiere jurisdictionOfIncorporationCountryName, businessCategory, serialNumber en el titular.

Otros tipos:

Google AdInline article slot
  • Multi-Dominio: SAN (subjectAltName) para varios dominios.
  • Wildcard: CN=*.ejemplo.com para subdominios.
  • Calificados: Certificados personales según RFC 3739 con givenName, dateOfBirth, countryOfCitizenship.

Generación de Certificados

Autofirmados con ECC

La Criptografía de Curva Elíptica (ECC) supera a RSA en eficiencia de CPU y tamaño de clave, pero el soporte en TLS <1.2 varía.

Genera clave privada secp521r1:

openssl ecparam -name secp521r1 -genkey -param_enc explicit -out clave-privada.pem

CSR con SHA256:

Google AdInline article slot
openssl req -new -sha256 -key clave-privada.pem -out server.csr -days 730

Autofirma:

openssl x509 -req -sha256 -days 365 -in server.csr -signkey clave-privada.pem -out publico.crt

Inspecciona:

openssl x509 -text -noout -in publico.crt

Ayuda: openssl -help, openssl x509 -help.

Con Java keytool

RSA 2048:

keytool -genkey -keyalg RSA -alias autofirmado -keystore keystore.jks -storepass contraseña -validity 360 -keysize 2048

Convierte a PKCS12:

keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.p12 -deststoretype pkcs12

La salida incluye SubjectKeyIdentifier (OID 2.5.29.14, no crítico según RFC 5280).

Let's Encrypt (DV)

Instala certbot y obtén certificados:

sudo certbot certonly --standalone -d ejemplo.com -d www.ejemplo.com

(Para Gentoo: sudo emerge certbot; Debian: sudo apt-get install certbot -t stretch-backports; Fedora: sudo dnf install certbot).

Extensiones y Análisis

Los certificados usan OIDs para identificación: subjectKeyIdentifier ::= KeyIdentifier. Desglose completo con openssl x509 -text. Las cadenas construyen confianza: raíz → intermedios → hoja.

Lecciones clave:

  • X.509 usa ASN.1: SEQUENCE como structs, codificación DER/BER.
  • Tipos: DV/OV/EV por validación, wildcard/SAN para flexibilidad.
  • Generación: openssl para ECC/RSA, keytool para JKS/PKCS12, certbot para Let's Encrypt.
  • Cadena: raíz (cA=TRUE) → intermedios → entidad final.

Depura cadenas con openssl s_client -connect host:443 -showcerts. Estándares como X.680/690, RFC 5280/3739 garantizan interoperabilidad de PKI.

— Editorial Team

Advertisement 728x90

Leer después