DevOps

Cómo crear una certificación SSL autofirmada en Apache

Guía completa para crear y utilizar una certificación SSL autofirmada en Apache en Ubuntu 16.04

Introducción

En la actualidad, la seguridad en las comunicaciones a través de Internet es un aspecto fundamental para garantizar la confidencialidad, integridad y autenticidad de los datos transmitidos. Uno de los mecanismos más utilizados para proteger la comunicación entre un servidor y un cliente es la implementación de certificados SSL (Secure Sockets Layer), que permiten cifrar la información y verificar la identidad del servidor. En este contexto, la plataforma Revista Completa presenta una guía exhaustiva, detallada y técnica para crear y configurar una certificación SSL autofirmada en un servidor web Apache operando bajo Ubuntu 16.04.

Este proceso es especialmente útil en entornos de desarrollo, pruebas internas o en situaciones donde no se requiere la verificación por parte de una autoridad certificadora (CA). La creación de certificados autofirmados, si bien carecen del respaldo de una CA confiable, proporciona una base sólida para experimentar con configuraciones de seguridad, comprender su funcionamiento y preparar entornos que posteriormente puedan migrar hacia certificados emitidos por entidades reconocidas.

Contexto y relevancia de las certificaciones SSL autofirmadas

Las certificaciones SSL, en su forma más básica, actúan como un mecanismo de cifrado que protege los datos transmitidos en una comunicación cliente-servidor. Sin embargo, la confianza en estos certificados también recae en la validación de la identidad del servidor por parte de una autoridad de certificación reconocida. La diferencia entre certificados firmados por una CA y los autofirmados radica en la cadena de confianza: mientras los primeros son validados y confiables por los navegadores y sistemas operativos, los segundos generan advertencias o errores de seguridad, ya que no están vinculados a una entidad certificadora externa.

En entornos de producción, es recomendable obtener certificados SSL de una autoridad confiable. Sin embargo, en fases de desarrollo, pruebas internas o en redes cerradas, la creación de certificados autofirmados resulta una solución práctica, económica y rápida para implementar cifrado en servidores Apache en Ubuntu 16.04. Además, este proceso facilita la comprensión del funcionamiento de SSL/TLS y la gestión de certificados digitales.

Requisitos previos y consideraciones iniciales

Antes de iniciar el proceso, es imprescindible contar con ciertos requisitos técnicos y de configuración que aseguren una implementación correcta y segura:

  • Acceso administrativo o privilegios de root en el sistema Ubuntu 16.04.
  • Servidor Apache instalado y en funcionamiento.
  • Conocimientos básicos sobre la línea de comandos de Linux y edición de archivos de configuración.
  • Paquete OpenSSL instalado en el sistema, que generalmente viene incluido en Ubuntu o puede instalarse fácilmente.
  • Firewall configurado para permitir conexiones en los puertos 80 (HTTP) y 443 (HTTPS) si se desea habilitar el servicio de manera completa.

A continuación, se detallan de manera secuencial y exhaustiva los pasos necesarios para lograr la creación y configuración de un certificado SSL autofirmado en Ubuntu 16.04 con Apache.

Instalación y configuración preliminar de Apache

Instalación de Apache

El primer paso consiste en verificar que Apache esté instalado en el sistema. En caso de no estarlo, se procede a su instalación mediante el gestor de paquetes apt, que garantiza la compatibilidad y la actualización del software.

sudo apt update
sudo apt install apache2

Tras ejecutar estos comandos, Apache se instalará de forma automática y se iniciará en el sistema. Se puede verificar su estado con:

systemctl status apache2

Este comando mostrará que el servicio está activo y en ejecución. La configuración predeterminada de Apache en Ubuntu 16.04 escucha en el puerto 80, preparado para responder a solicitudes HTTP.

Habilitación del módulo SSL en Apache

El módulo SSL, conocido como mod_ssl, es imprescindible para habilitar la funcionalidad HTTPS en Apache. Para habilitarlo, se utiliza el comando a2enmod:

sudo a2enmod ssl

Este proceso activa las directivas necesarias para gestionar conexiones cifradas y habilita la inclusión del módulo en la configuración del servidor. Luego, se recomienda reiniciar Apache para aplicar los cambios:

sudo systemctl restart apache2

Preparación del entorno para los certificados SSL

Creación del directorio para los certificados

Es recomendable mantener los archivos relacionados con SSL en un directorio dedicado para facilitar su gestión y organización. Se crea el directorio con el siguiente comando:

sudo mkdir /etc/apache2/ssl

Este directorio será el lugar donde se almacenarán tanto la clave privada como el certificado autofirmado.

Generación del certificado y la clave privada

El proceso de creación del certificado autofirmado se realiza mediante la herramienta OpenSSL, que permite generar claves y certificados de manera flexible y segura. La ejecución del siguiente comando crea una clave privada y un certificado válido por 365 días:

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

Durante la ejecución, se solicitará información adicional, como:

  • País (Country Name)
  • Estado o provincia (State or Province Name)
  • Ciudad (Locality Name)
  • Nombre de la organización (Organization Name)
  • Unidad organizacional (Organizational Unit Name)
  • Nombre común (Common Name), que generalmente corresponde al dominio o IP del servidor
  • Correo electrónico (Email Address)

Estos datos se incorporan en el certificado para identificar claramente el servidor o el sitio web en cuestión.

Configuración del servidor Apache para utilizar el certificado SSL

Edición del archivo de configuración SSL

El archivo de configuración principal para SSL en Ubuntu 16.04 se encuentra en /etc/apache2/sites-available/default-ssl.conf. Es necesario editar este archivo para incluir las rutas correctas hacia los archivos generados previamente.

sudo nano /etc/apache2/sites-available/default-ssl.conf

Dentro del archivo, localice las líneas que contienen las directivas SSLCertificateFile y SSLCertificateKeyFile. Modifíquelas para que apunten a los archivos certificados y clave privada:

SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Es recomendable verificar que no existan errores de sintaxis en este archivo antes de continuar.

Habilitación del sitio SSL y reinicio del servicio Apache

Luego, se habilita el sitio SSL mediante el comando:

sudo a2ensite default-ssl

Este comando crea un enlace simbólico en /etc/apache2/sites-enabled/ y activa la configuración de SSL en Apache. Finalmente, se reinicia el servidor para que los cambios tengan efecto:

sudo systemctl restart apache2

Configuración adicional y ajuste del firewall

Permitir tráfico HTTPS en el firewall

Si se utiliza un firewall como UFW (Uncomplicated Firewall), es necesario permitir las conexiones en el puerto 443, que es el predeterminado para HTTPS. Esto se realiza con el siguiente comando:

sudo ufw allow 'Apache Full'

Este perfil de UFW habilita tanto el tráfico HTTP como HTTPS, garantizando que los clientes puedan acceder a través de conexiones cifradas.

Verificación de la configuración SSL

Para comprobar que la configuración SSL funciona correctamente, basta con acceder desde un navegador a la URL del sitio con el prefijo https://. La presencia del candado en la barra de direcciones del navegador indica que la conexión está cifrada y que el certificado autofirmado ha sido correctamente instalado.

También es posible usar herramientas en línea para verificar la validez y la configuración del certificado, como SSL Labs.

Consideraciones importantes y limitaciones de los certificados autofirmados

Aunque la creación y uso de certificados SSL autofirmados es sencilla y útil para entornos internos o de prueba, es fundamental entender sus limitaciones. Los navegadores y clientes consideran estos certificados como no confiables por no estar firmados por una autoridad reconocida, lo que genera advertencias de seguridad que pueden desalentar a los usuarios finales.

Para entornos productivos o públicos, siempre será recomendable obtener certificados SSL de entidades certificadoras confiables, como Let’s Encrypt, Comodo, DigiCert, entre otras. Estos certificados garantizan mayor confianza y seguridad, además de evitar advertencias molestas en los navegadores.

Resumen y pasos clave

Paso Descripción
1 Instalar Apache en Ubuntu 16.04 usando apt.
2 Habilitar el módulo SSL con a2enmod ssl y reiniciar Apache.
3 Crear directorio /etc/apache2/ssl para almacenar los certificados.
4 Generar el certificado autofirmado y la clave privada con openssl.
5 Editar el archivo default-ssl.conf para especificar los archivos de certificado y clave.
6 Habilitar el sitio SSL con a2ensite y reiniciar Apache.
7 Configurar el firewall para permitir conexiones HTTPS mediante ufw.
8 Verificar la correcta implementación accediendo mediante HTTPS en un navegador.

Fuentes y referencias

  1. Documentación oficial de Apache SSL
  2. Guía práctica para Ubuntu 20.04 (similar en Ubuntu 16.04)

Conclusión

La creación y configuración de certificados SSL autofirmados en un servidor Apache en Ubuntu 16.04 constituye una práctica fundamental para aquellos que desean establecer conexiones seguras en entornos controlados, de desarrollo o pruebas internas. A través de esta guía, se ha detallado cada paso de manera técnica, enriquecida con aspectos de seguridad, gestión y verificación. Aunque estos certificados no ofrecen la misma confianza que los certificados emitidos por CA confiables, su utilización permite comprender en profundidad el funcionamiento de SSL/TLS y preparar el camino para futuras implementaciones en producción con certificados validados por entidades reconocidas.

La adecuada gestión de certificados y la configuración cuidadosa de Apache garantizan una infraestructura segura y eficiente, contribuyendo a fortalecer la protección de los datos en la red y a promover buenas prácticas de seguridad en el entorno web. La plataforma Revista Completa continúa comprometida en ofrecer contenido técnico y actualizado para profesionales y entusiastas del ámbito tecnológico.

Botón volver arriba