¿Qué es un Certificado Autofirmado?

Un certificado autofirmado es un certificado digital firmado por su propio creador en lugar de una Autoridad de Certificación (CA) confiable. A diferencia de los certificados emitidos por CA como Let's Encrypt, DigiCert o Comodo, los certificados autofirmados no son automáticamente confiables por navegadores y sistemas operativos.

Los certificados digitales utilizan criptografía de clave pública para establecer conexiones seguras y cifradas entre clientes y servidores. Contienen información sobre el titular del certificado (sujeto), el emisor, período de validez y una clave pública. Cuando un servidor presenta un certificado, el cliente lo verifica con los certificados raíz confiables para garantizar que la conexión sea segura y auténtica.

¿Cómo Funciona la Generación de Certificados?

El proceso de generación de certificados implica varios pasos criptográficos:

  1. Generación de Par de Claves: Se genera un par de claves RSA (claves pública y privada). La clave privada debe mantenerse en secreto, mientras que la clave pública se incorpora en el certificado.

  2. Creación de Certificado: Se crea una estructura de certificado que contiene la información del sujeto (Nombre Común, Organización, País, etc.), fechas de validez y la clave pública.

  3. Autofirma: El certificado se firma digitalmente utilizando la clave privada y un algoritmo de hash (SHA-256, SHA-384 o SHA-512). Esta firma permite que cualquiera con la clave pública verifique la integridad del certificado.

  4. Codificación PEM: El certificado y la clave privada se codifican en formato PEM (Privacy-Enhanced Mail), un formato ampliamente compatible con servidores y aplicaciones codificado en Base64.

Descripción de la Herramienta

Esta herramienta genera certificados X.509 autofirmados y sus correspondientes claves privadas directamente en su navegador. Ningún dato se envía a ningún servidor; todas las operaciones criptográficas se realizan localmente utilizando la biblioteca node-forge. Puede personalizar los campos del sujeto del certificado, tamaño de clave, período de validez y algoritmo de firma para cumplir con sus requisitos específicos.

Ejemplos

Certificado básico para localhost:

  • Nombre Común: localhost
  • Tamaño de Clave: 2048 bits
  • Validez: 1 año
  • Algoritmo: SHA-256

Certificado para servidor de desarrollo:

  • Nombre Común: dev.myapp.local
  • Organización: Mi Empresa
  • País: US
  • Tamaño de Clave: 2048 bits
  • Validez: 2 años

Formato de salida (Certificado):

-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAJC1HiIAZAiUMA0GCSqGSIb3QasEBBUAMEUxCzAJBgNV
...
-----END CERTIFICATE-----

Formato de salida (Clave Privada):

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA0Z3VS5JJcds3xfn/ygWyF8PbnGy...
...
-----END RSA PRIVATE KEY-----

Características

  • Generación en navegador: Todas las operaciones criptográficas se ejecutan localmente en su navegador sin comunicación con servidores
  • Tamaños de clave configurables: Elija entre claves RSA de 1024, 2048, 3072 o 4096 bits para diferentes niveles de seguridad
  • Múltiples algoritmos de firma: Compatibilidad con algoritmos de hash SHA-256, SHA-384 y SHA-512
  • Campos X.509 completos: Establezca Nombre Común, Organización, Unidad Organizativa, País, Estado y Localidad
  • Períodos de validez flexibles: Genere certificados válidos desde 30 días hasta 10 años

Campos del Certificado Explicados

Campo Descripción Ejemplo
Nombre Común (CN) El nombre de dominio o nombre de host para el que es el certificado localhost, example.com
Organización (O) Nombre legal de la organización Corporación Acme
Unidad Organizativa (OU) Departamento o división Departamento de TI
País (C) Código de país ISO de dos letras US, GB, DE
Estado/Provincia (ST) Nombre del estado o provincia California
Localidad (L) Nombre de ciudad o población San Francisco

Recomendaciones de Tamaño de Clave

  • 1024 bits: No recomendado para producción; solo adecuado para pruebas
  • 2048 bits: Nivel de seguridad estándar; recomendado para la mayoría de los casos
  • 3072 bits: Seguridad mejorada; bueno para entornos de desarrollo sensibles
  • 4096 bits: Seguridad máxima; generación más lenta pero mayor protección

[El resto del documento continúa en el mismo estilo de traducción]