Cómo obtener un certificado SSL y activar HTTPS en Apache

Cómo obtener un certificado SSL y activar HTTPS en Apache

Aprende a generar un certificado SSL autofirmado con OpenSSL y a configurarlo en tu servidor Apache desde Webmin, habilitando HTTPS en el puerto 443. Incluye verificación y errores comunes.

FECHA:
ACTUALIZADO:
AUTOR:Jorge Beneyto Castelló
LECTURA:7 MINUTOS DE LECTURA

¿Alguna vez has abierto tu web y el navegador te ha avisado de que “la conexión no es privada”? Eso es justo lo que pasa cuando un sitio no tiene un certificado SSL: los datos viajan en claro y nadie se fía. En esta guía te cuento cómo generar unos certificados SSL con OpenSSL y activarlos en tu servidor Apache desde Webmin, para que tu página pase a servirse por HTTPS en el puerto 443. Sin mareos, paso a paso.


¿Qué vamos a conseguir?

  • Activar el módulo SSL en Apache desde Webmin.
  • Generar un par de ficheros: certificado y clave privada con openssl.
  • Configurar la zona virtual de Apache para usar esos certificados y escuchar en el puerto 443.
  • Verificar que tu página carga con HTTPS y un candado en el navegador.
  • Entender los errores típicos de certificados y cómo solucionarlos.

Prerrequisitos

  • Un servidor Linux (Debian/Ubuntu) con Apache instalado y funcionando.
  • Webmin instalado y accesible por navegador (https://localhost:10000/).
  • Acceso por terminal al servidor con permisos de administrador (sudo).
  • Un usuario cliente desde el que comprobar el resultado.

Instala las herramientas que necesitaremos en el servidor:

sudo apt update
sudo apt install openssl apache2

Si no tienes Webmin todavía, puedes instalarlo siguiendo la documentación oficial de Webmin. El resto de la guía asume que ya puedes entrar en https://localhost:10000/.


Paso 1 — Activar el módulo SSL en Apache

Lo primero es entrar en Webmin desde la máquina servidora y comprobar que Apache está iniciado. La ruta es:

Servidores → Servidor web Apache → Global Configuration → Configuración de módulos Apache

Activar el módulo SSL en Webmin

Dentro de la Configuración de módulos Apache localiza la opción SSL y actívala. Una vez activada, verás una opción Enable selected modules (o similar) para confirmar los cambios.

Activar el módulo de Apache desde Webmin

Con el módulo activado, toca generar los certificados. Es hora de abrir una terminal y usar OpenSSL.


Paso 2 — Generar el certificado SSL con OpenSSL

Primero comprobamos que openssl está instalado (si no, lo instalamos con el comando del bloque de prerrequisitos):

openssl version

Ahora creamos una carpeta donde guardar los dos ficheros (certificado y clave). Yo uso la ruta /etc/http:

sudo mkdir /etc/http
cd /etc/http

Dentro, ejecutamos el comando que genera la pareja de certificados. Este comando crea un par de claves RSA y un certificado X.509 autofirmado de forma simultánea:

sudo openssl req -newkey rsa:2048 -x509 -nodes -out cert.pem -keyout key.pem
Generar los certificados con openssl en la terminal

Te preguntará por una serie de datos (país, provincia, nombre de la organización, etc.). Rellénalos o pulsa Enter para dejarlos en blanco. Para un tutorial de pruebas dan igual; para producción deben ser reales.

Explicación de las opciones importantes

  • -newkey rsa:2048: genera una clave privada RSA de 2048 bits (recomendada; en el ejemplo original era 512, demasiado débil hoy).
  • -x509: emite directamente un certificado en lugar de una petición de firma (CSR).
  • -nodes: “no DES”, es decir, no protege la clave con contraseña, así Apache puede leerla sin pedirla en cada reinicio.
  • -out cert.pem: el fichero del certificado público.
  • -keyout key.pem: el fichero de la clave privada.

Dar permisos a los ficheros

Después, damos los permisos correctos para que el servicio web pueda leer los ficheros:

sudo chmod 644 cert.pem
sudo chmod 600 key.pem

El original usaba chmod +x y rsa:512. Con 512 bits el cifrado es trivial de romper hoy en día: usa al menos 2048. Y para los ficheros de un certificado lo que importa no es el ejecutable, sino los permisos de lectura.

Verificar que se crearon

Podemos comprobar que los dos ficheros están creados listando la carpeta:

ls -l /etc/http

Deberías ver cert.pem y key.pem. Con esto, ya tenemos nuestra pareja de certificados.


Paso 3 — Configurar la Zona Virtual con SSL en Webmin

Volvemos a Webmin → Servidor web Apache. Localiza tu zona virtual (Virtual Host) y entra en ella. Dentro, busca la sección Opciones SSL:

Opciones SSL de la zona virtual en Webmin

En Opciones SSL rellena los dos campos con las rutas absolutas de nuestros ficheros:

  • Archivo de certificado / clave pública: /etc/http/cert.pem
  • Archivo de clave privada: /etc/http/key.pem

Configurar el puerto 443

Ahora configuramos el puerto para que Apache escuche en el 443 (el puerto estándar de HTTPS):

Configurar el puerto 443 en Webmin

Guarda los cambios y aplica/reinicia Apache desde Webmin o desde la terminal:

sudo systemctl restart apache2
sudo systemctl status apache2

Paso 4 — Comprobar que funciona

Desde el equipo cliente abre el navegador y ve a tu sitio usando HTTPS:

https://192.168.101.1
Aviso de conexión no privada al acceder por HTTPS

Como el certificado es autofirmado, el navegador te avisará de que “la conexión no es privada”. Esto es esperable y correcto: el navegador no puede verificar que el certificado lo ha firmado una autoridad de confianza (CA). Para acceder en un entorno de pruebas, haz clic en Avanzado → Continuar / entender los riesgos (o “make an exception”):

Hacer una excepción para el certificado autofirmado

Al hacer la excepción, ya podrás entrar en la página. Verás el candado en la barra de direcciones indicando que la conexión está cifrada.

Verificar desde terminal

También puedes verificar el certificado con curl:

curl -vk https://192.168.101.1

Y comprobar que Apache escucha en el 443:

ss -tlnp | grep :443

Errores comunes

ErrorCausaSolución
SSL received a record that exceeded the maximum permissible lengthApache no está escuchando en 443 con SSLActiva el módulo y configura el puerto 443 en la zona virtual
Aviso “la conexión no es privada”Certificado autofirmado (sin CA de confianza)Normal en pruebas: haz la excepción. Para producción usa una CA
Apache no arranca tras configurar SSLRutas incorrectas de cert.pem/key.pem o permisosRevisa las rutas absolutas en Webmin y los permisos 644/600
Se pide contraseña al reiniciar ApacheLa clave privada está cifrada (sin -nodes)Regenera la clave con -nodes
Página carga por HTTP pero no por HTTPSRedirección o puerto mal configuradoVerifica ss -tlnp | grep :443 y que el navegador use https://
El navegador rechaza la clave (4096/512 bits)Clave demasiado débil o antiguaRegenera con rsa:2048 o superior

Siguiente nivel

  1. Certificado autofirmado no basta para internet real — para un dominio público usa un certificado gratuito y válido de Let’s Encrypt con certbot, que además se renueva solo.
  2. Protege carpetas con contraseña en Apache/Webmin para restringir zonas privadas: Cómo proteger una carpeta con contraseña en Webmin.
  3. Asegura el acceso remoto a tu servidor con SSH y claves: Formas de conectarse por SSH y Conexión SSH mediante clave pública privada.
  4. Monta tu propio panel de control con Webmin para gestionar Apache, certificados y más servicios sin tocar la terminal.

Enlaces y recursos

COMPARTIR:
COMENTARIOS:

📋 Contenido