Oh MyUtils

Decodificador de Certificados - Decodificar Certificados X.509 PEM en Línea

Decodifique e inspeccione certificados X.509 PEM. Vea sujeto, emisor, validez, extensiones, SANs y huellas — 100% del lado del cliente.

100% del lado del cliente — Sus datos de certificado nunca salen del navegador
Certificado PEM

Preguntas Frecuentes

Que es un Decodificador de Certificados?

Un Decodificador de Certificados es una herramienta en linea que analiza certificados digitales X.509 codificados en PEM y muestra su contenido en un formato legible para humanos. Los certificados X.509 son el formato estandar utilizado en SSL/TLS para establecer conexiones HTTPS seguras. Estan codificados usando ASN.1 DER (Distinguished Encoding Rules) y envueltos en formato PEM (Privacy-Enhanced Mail) con codificacion Base64. Esta herramienta extrae informacion clave como el nombre de dominio (Subject), la autoridad certificadora que lo emitio (Issuer), fechas de validez, detalles de la clave publica y extensiones de seguridad, todo sin necesidad de instalar OpenSSL o usar herramientas de linea de comandos.

Como uso este Decodificador de Certificados?

1. Obtenga su certificado PEM de un archivo .pem, .crt o .cer, o exportelo desde su servidor web o navegador. 2. Pegue el texto PEM en el area de texto de entrada. El certificado debe comenzar con -----BEGIN CERTIFICATE----- y terminar con -----END CERTIFICATE-----. 3. La herramienta decodifica automaticamente el certificado y muestra los resultados, sin necesidad de hacer clic en ningun boton. 4. Revise la tarjeta de Resumen del Certificado para una vista rapida (dominio, emisor, estado de expiracion). 5. Navegue por las pestanas Detalles, Extensiones y Cadena para mas informacion. 6. Haga clic en el boton de copiar junto a cualquier campo para copiar su valor. 7. Para cadenas de certificados, pegue todos los certificados en orden. La herramienta analizara cada uno y mostrara la jerarquia de la cadena.

Estan seguros mis datos de certificado? Se envian a un servidor?

Sus datos de certificado estan 100% seguros y nunca salen de su navegador. Todo el analisis de certificados — decodificacion ASN.1, extraccion de extensiones, calculo de huellas digitales — se realiza completamente en el lado del cliente usando JavaScript. La herramienta utiliza la biblioteca @peculiar/x509 para el analisis ASN.1 y la API Web Crypto nativa del navegador para el calculo de huellas digitales. No se transmiten datos a ningun servidor, ningun sistema de analisis rastrea el contenido de su certificado y no se almacenan datos en ningun lugar mas alla de la memoria de la pestana de su navegador.

Cual es la diferencia entre el formato PEM y DER?

DER (Distinguished Encoding Rules) es el formato binario sin procesar utilizado para codificar datos de certificados X.509 segun las reglas ASN.1. Es una representacion binaria compacta que no es legible para humanos. PEM (Privacy-Enhanced Mail) es un envoltorio basado en texto alrededor de datos DER. Codifica en Base64 los bytes DER y agrega los marcadores -----BEGIN CERTIFICATE----- y -----END CERTIFICATE-----. PEM es el formato mas comun para el intercambio de certificados porque se puede copiar y pegar de forma segura como texto, incrustar en archivos de configuracion y transmitir a traves de protocolos basados en texto. Esta herramienta acepta formato PEM.

Que es una cadena de certificados y como la maneja esta herramienta?

Una cadena de certificados (o cadena de confianza) es una secuencia de certificados que vincula el certificado hoja de un sitio web con una Autoridad Certificadora (CA) raiz de confianza. La cadena tipicamente consiste en: 1) Certificado Hoja — el certificado propio del servidor que contiene el nombre de dominio, 2) Certificado(s) de CA Intermedia — certificados emitidos por la CA raiz para delegar autoridad de firma, 3) Certificado de CA Raiz — el certificado autofirmado de una Autoridad Certificadora de confianza. Cuando pega un bloque PEM que contiene multiples certificados, esta herramienta analiza cada uno y los muestra en orden de cadena, identificando la posicion de cada certificado (hoja, intermedio, raiz).

Que son las extensiones X.509 v3?

Las extensiones X.509 v3 son campos opcionales en los certificados que transmiten informacion adicional. Las extensiones comunes incluyen: Nombres Alternativos del Sujeto (SAN) para nombres de dominio e IPs adicionales, Uso de Clave para operaciones criptograficas permitidas (firma digital, cifrado de clave), Uso Extendido de Clave para propositos especificos como autenticacion de servidor TLS o firma de codigo, Restricciones Basicas para indicar si un certificado es una CA, Identificador de Clave de Autoridad/Sujeto para construir cadenas de certificados, y Puntos de Distribucion CRL para verificacion de revocacion. Las extensiones pueden ser Criticas (deben ser entendidas por el verificador) o No Criticas (informativas).

Como se calcula la huella digital del certificado?

Una huella digital de certificado es un hash criptografico de todos los bytes del certificado codificado en DER. NO es parte del certificado en si — se calcula externamente como un identificador compacto para referenciar un certificado especifico. Esta herramienta calcula huellas digitales SHA-256 y SHA-1 usando la API Web Crypto del navegador (crypto.subtle.digest()). El resultado se muestra en formato hexadecimal separado por dos puntos (por ejemplo, AB:CD:EF:12:34:...). Las huellas digitales SHA-256 son preferidas por seguridad; las huellas digitales SHA-1 se incluyen por compatibilidad con sistemas antiguos.

Ejemplos de Codigo

// Certificate Decoder - JavaScript Implementation
// Uses Web Crypto API for fingerprint computation

/**
 * Extract the DER bytes from a PEM string
 * @param {string} pem - PEM-encoded certificate
 * @returns {ArrayBuffer} DER-encoded certificate bytes
 */
function pemToDer(pem) {
  const base64 = pem
    .replace(/-----BEGIN CERTIFICATE-----/g, '')
    .replace(/-----END CERTIFICATE-----/g, '')
    .replace(/\s/g, '');
  const binary = atob(base64);
  const bytes = new Uint8Array(binary.length);
  for (let i = 0; i < binary.length; i++) {
    bytes[i] = binary.charCodeAt(i);
  }
  return bytes.buffer;
}

/**
 * Parse multiple certificates from a PEM chain
 * @param {string} pemText - PEM text (may contain multiple certificates)
 * @returns {string[]} Array of individual PEM certificate strings
 */
function extractPemBlocks(pemText) {
  const regex = /-----BEGIN CERTIFICATE-----[\s\S]*?-----END CERTIFICATE-----/g;
  return pemText.match(regex) || [];
}

/**
 * Compute SHA-256 fingerprint of a DER-encoded certificate
 * @param {ArrayBuffer} derBytes - DER-encoded certificate
 * @returns {Promise<string>} Colon-separated hex fingerprint
 */
async function computeSha256Fingerprint(derBytes) {
  const hashBuffer = await crypto.subtle.digest('SHA-256', derBytes);
  const hashArray = Array.from(new Uint8Array(hashBuffer));
  return hashArray
    .map(b => b.toString(16).padStart(2, '0').toUpperCase())
    .join(':');
}

// Usage with @peculiar/x509:
// import { X509Certificate } from '@peculiar/x509';
// const cert = new X509Certificate(pem);
// console.log('Subject:', cert.subject);
// console.log('Issuer:', cert.issuer);

Herramientas relacionadas