Introducción
En este laboratorio, explorará los aspectos prácticos de la creación y gestión de certificados X.509, una piedra angular de la seguridad digital moderna. Los certificados X.509 son documentos digitales que vinculan una clave pública a una identidad, como una persona o un servidor, y son fundamentales para protocolos como TLS/SSL para asegurar el tráfico web.
Utilizando la potente herramienta de línea de comandos openssl, aprenderá a realizar tareas esenciales de gestión de certificados. Comenzará comprendiendo la estructura de un certificado y luego creará un certificado autofirmado (self-signed) para fines de desarrollo. Posteriormente, generará una Solicitud de Firma de Certificado (CSR - Certificate Signing Request) y actuará como una Autoridad de Certificación (CA) simple para firmarla, produciendo un certificado de confianza dentro de su propio sistema.
Al finalizar este laboratorio, tendrá una comprensión sólida y práctica del ciclo de vida de los certificados.
Visión General de los Certificados X.509
En este paso, cubriremos la teoría básica detrás de los certificados X.509. No hay comandos que ejecutar aquí; esta sección es para su comprensión antes de comenzar las tareas prácticas.
Un certificado X.509 es un documento digital estandarizado que contiene información crucial para establecer confianza. Sus componentes principales incluyen:
- Sujeto (Subject): La identidad del titular del certificado (por ejemplo, una persona, un nombre de servidor como
www.example.com). - Emisor (Issuer): La entidad que verificó la identidad y firmó el certificado (la Autoridad de Certificación o CA).
- Clave Pública (Public Key): La clave pública correspondiente a la clave privada del sujeto.
- Período de Validez (Validity Period): Las fechas (
Not BeforeyNot After) durante las cuales el certificado es válido. - Firma (Signature): La firma digital del emisor, que garantiza la autenticidad del certificado.
Un certificado autofirmado (self-signed certificate) es un tipo especial de certificado donde el emisor y el sujeto son la misma entidad. Esencialmente, el certificado se firma a sí mismo. Aunque estos certificados no son de confianza para los navegadores o sistemas públicos (porque no están verificados por una CA conocida), son extremadamente útiles para pruebas internas, entornos de desarrollo o redes privadas donde usted controla tanto el cliente como el servidor.
En el siguiente paso, creará su propio certificado autofirmado.
Crear un Certificado Autofirmado
En este paso, creará un certificado autofirmado. Ya se ha generado una clave privada llamada private.pem para usted en el directorio ~/project para simplificar el proceso. Utilizará esta clave para generar un certificado.
El comando openssl req se utiliza para crear y procesar solicitudes de certificados. Desglosemos las opciones (flags) que utilizaremos:
-new: Genera una nueva solicitud de certificado.-x509: Genera un certificado autofirmado en lugar de una solicitud de certificado.-key private.pem: Especifica la clave privada a utilizar.-out cert.pem: Especifica el nombre del archivo de salida para el certificado.-days 365: Establece la validez del certificado en 365 días.-subj "...": Proporciona la información del sujeto de forma no interactiva.
Ahora, ejecute el siguiente comando en su terminal para crear el certificado:
openssl req -new -x509 -key private.pem -out cert.pem -days 365 -subj "/C=US/ST=California/L=Mountain View/O=MyOrg/CN=example.com"
Este comando no producirá ninguna salida, pero creará un nuevo archivo. Puede verificar que el archivo cert.pem se ha creado listando los archivos en el directorio actual:
ls
Debería ver cert.pem en la salida, junto con los archivos pregenerados.
ca-key.pem ca.pem cert.pem private.pem
Ver Detalles del Certificado
En este paso, inspeccionará el contenido del certificado autofirmado que acaba de crear. Esto le permitirá verificar sus detalles y comprender su estructura en un formato legible por humanos.
Utilizaremos el comando openssl x509, que está diseñado para ver y manipular archivos de certificados.
-in cert.pem: Especifica el archivo de certificado de entrada.-text: Imprime los detalles completos del certificado en formato de texto.-noout: Evita que el comando imprima la versión codificada del certificado.
Ejecute el siguiente comando para ver los detalles de cert.pem:
openssl x509 -in cert.pem -text -noout
La salida será bastante larga, pero desplácese por ella y preste atención a estos campos clave:
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
...
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = US, ST = California, L = Mountain View, O = MyOrg, CN = example.com
Validity
Not Before: ...
Not After : ...
Subject: C = US, ST = California, L = Mountain View, O = MyOrg, CN = example.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
...
Exponent: 65537 (0x10001)
...
Observe que los campos Issuer (Emisor) y Subject (Sujeto) son idénticos. Esta es la característica definitoria de un certificado autofirmado.
Generar Solicitud de Firma de Certificado
En este paso, generará una Solicitud de Firma de Certificado (CSR, por sus siglas en inglés). Una CSR es un bloque de texto codificado que contiene su clave pública e información de identidad. Usted envía una CSR a una Autoridad de Certificación (CA) para solicitar un certificado digital firmado.
Nuevamente utilizaremos el comando openssl req, pero esta vez sin la opción -x509, para que produzca una CSR en lugar de un certificado autofirmado.
-new: Indica una nueva solicitud.-key private.pem: Utiliza su clave privada existente.-out csr.pem: Especifica el nombre del archivo de salida para la CSR.-subj "...": Proporciona la información de identidad para el certificado que está solicitando.
Ejecute el siguiente comando para generar una CSR para una aplicación web ficticia:
openssl req -new -key private.pem -out csr.pem -subj "/C=US/ST=New York/L=New York City/O=MyWebApp/CN=webapp.example.com"
Este comando creará un nuevo archivo llamado csr.pem. Puede verificar su creación con el comando ls:
ls
Ahora verá csr.pem en su directorio de proyecto.
ca-key.pem ca.pem cert.pem csr.pem private.pem
Esta CSR ya está lista para ser enviada a una CA para su firma.
Firmar el CSR
En este paso final, usted actuará como una Autoridad de Certificación (CA) para firmar la CSR que creó en el paso anterior. Para este propósito, se han pregenerado en su entorno un certificado de CA simple (ca.pem) y su clave privada correspondiente (ca-key.pem).
Utilizaremos el comando openssl x509 -req para procesar la CSR y emitir un nuevo certificado.
-req: Especifica que estamos procesando una CSR.-in csr.pem: El archivo CSR de entrada.-CA ca.pem: El certificado de la CA utilizado para la firma.-CAkey ca-key.pem: La clave privada de la CA utilizada para la firma.-out signed-cert.pem: El archivo de salida para el certificado recién firmado.-days 365: Establece el período de validez.-CAcreateserial: Crea y gestiona un archivo de número de serie (ca.srl), que es requerido por las CA para rastrear los certificados emitidos.
Ejecute el comando a continuación para firmar la CSR:
openssl x509 -req -in csr.pem -CA ca.pem -CAkey ca-key.pem -out signed-cert.pem -days 365 -CAcreateserial
Verá una salida confirmando que la firma fue exitosa:
Certificate request self-signature ok
subject=C = US, ST = New York, L = New York City, O = MyWebApp, CN = webapp.example.com
Ahora, liste los archivos para ver su certificado recién creado, signed-cert.pem, y el archivo de serie, ca.srl.
ls
ca-key.pem ca.pem ca.srl cert.pem csr.pem private.pem signed-cert.pem
Puede inspeccionar este nuevo certificado con openssl x509 -in signed-cert.pem -text -noout. Notará que el Issuer (Emisor) es ahora la CA (CN=myca.com), y el Subject (Sujeto) es la identidad de su CSR (CN=webapp.example.com).
Resumen
En este laboratorio, usted adquirió experiencia práctica con el ciclo de vida fundamental de los certificados X.509 utilizando la herramienta openssl.
Usted ha aprendido con éxito cómo:
- Comprender los componentes centrales de un certificado X.509 y el concepto de certificados autofirmados.
- Crear un certificado autofirmado adecuado para desarrollo y pruebas usando
openssl req. - Inspeccionar los detalles de un certificado para verificar su contenido con
openssl x509. - Generar una Solicitud de Firma de Certificado (CSR) para solicitar formalmente un certificado a una CA.
- Actuar como una Autoridad de Certificación simple para firmar una CSR y emitir un certificado nuevo y válido.
Estas habilidades son esenciales para cualquier persona involucrada en administración de sistemas, seguridad de redes o desarrollo de software, proporcionando la base para gestionar comunicaciones seguras en una variedad de aplicaciones.



