Nota: Este artículo fue publicado originalmente en 2014. Algunos pasos, comandos o versiones de software pueden haber cambiado. Consulta la documentación actual de Ubuntu para la información más reciente.

Requisitos Previos

Antes de comenzar, asegúrate de tener:

  • Un sistema con Ubuntu (edición de escritorio o servidor)
  • Acceso a la terminal con privilegios sudo
  • Familiaridad básica con la línea de comandos de Linux

¿Por Qué Crear un Certificado Autofirmado?

Durante las fases iniciales del despliegue de un servidor web, frecuentemente necesitamos probar las comunicaciones seguras usando un certificado. Es posible que no tengamos un certificado válido de una autoridad de certificación en ese momento.

Un certificado autofirmado, como su nombre lo indica, es un certificado que tú mismo creas. Los beneficios son claros: controlas todo el proceso y puedes crear un certificado con las características que desees. La desventaja es que, al no estar firmado por una autoridad de certificación confiable, la mayoría de los navegadores mostrarán advertencias de seguridad.

Esta solución funciona bien para escenarios de prueba o sitios personales donde no necesitas establecer confianza pública.

Paso 1 — Elegir una Ubicación para tu Certificado SSL

Dependiendo de tus necesidades, puedes colocar tu certificado SSL en diferentes lugares. Recomiendo dedicar un lugar específico para almacenarlos:

  • Apache: /etc/apache2/ssl
  • NginX: /etc/nginx/conf.ssl

Paso 2 — Crear tu Certificado SSL Autofirmado

Vamos a crear tanto nuestro certificado público como nuestra clave privada:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/conf.ssl/selfsigned.key -out /etc/nginx/conf.ssl/selfsigned.crt

Parámetros explicados:

  • sudo: Necesitas credenciales de administrador
  • openssl: Herramienta de línea de comandos para crear y gestionar certificados
  • req: Especifica los parámetros de la solicitud
  • -x509: Especifica que queremos crear un certificado autofirmado
  • -nodes: No proteger la clave privada con una contraseña
  • -days 365: Validez del certificado en días
  • -newkey rsa:2048: Crear una clave RSA de 2048 bits
  • -keyout: Archivo de salida para la clave privada
  • -out: Archivo de salida para el certificado

Al presionar “ENTER”, deberás proporcionar información adicional:

Country Name (2 letter code): MX
State or Province Name: Estado
Locality Name: Ciudad
Organization Name: Tu Empresa LLC
Organizational Unit Name: TI
Common Name: tudominio.com
Email Address: [email protected]

Paso 2.1 — Crear un Certificado con Nombres Alternativos (SAN)

Para certificados que cubran múltiples dominios, necesitas usar Subject Alternative Names (SAN).

I. Editar openssl.cnf

En Ubuntu, el archivo se encuentra en: /usr/lib/ssl/openssl.cnf

Inserta la siguiente línea antes de la entrada “HOME”:

SAN="email:[email protected]"

II. Agregar subjectAltName

Añade la siguiente línea después de los marcadores de sección:

subjectAltName=${ENV::SAN}

III. Configurar la variable de entorno SAN

export SAN="DNS:*.tudominio.com, DNS:tudominio.com, DNS:www.tudominio.com"

Resumen

Has aprendido exitosamente cómo crear un certificado autofirmado en Ubuntu. Si encuentras algún problema, verifica los requisitos previos y asegúrate de que tu entorno Ubuntu esté correctamente configurado.