Generación de Certificados X.509 en Criptografía

LinuxBeginner
Practicar Ahora

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.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

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 Before y Not 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.