Saltar al contenido principal

Cómo instalar SSL en un VPS sin tiempo de inactividad

· 7 min de lectura
Customer Care Engineer

Publicado el 9 de noviembre de 2026

Cómo instalar SSL en un VPS sin tiempo de inactividad

Para instalar SSL en un VPS de forma segura, primero confirma que tu dominio apunta al VPS, que los puertos 80 y 443 son accesibles y que el servidor web ya está sirviendo el sitio correcto. La instalación de SSL suele ser rápida. Los problemas que causan dificultades casi siempre se deben al DNS, a las reglas del firewall o a una configuración del host virtual que apunta a un lugar inesperado.

Un certificado válido cifra el tráfico entre un visitante y tu aplicación. También activa el candado del navegador, protege las sesiones de inicio de sesión y los formularios de pago, y evita la página de advertencia que aleja a los clientes antes de que tu sitio web siquiera tenga la oportunidad de funcionar. Para un sitio de comercio electrónico, un panel de SaaS, el sitio de un cliente de una agencia o un portal de correo empresarial, esto es una medida básica de higiene en producción.

Antes de instalar SSL en un VPS, comprueba estos aspectos básicos​

Empieza por comprobar el registro DNS. El registro A de tu dominio debe resolverse a la dirección IPv4 pública del VPS. Si usas IPv6, el registro AAAA también debe apuntar al mismo servidor. Un registro AAAA olvidado es un clásico menor: algunos visitantes llegan al nuevo servidor, mientras que otros llegan a uno antiguo y reciben un error de discrepancia del certificado.

A continuación, asegúrate de que los puertos TCP entrantes 80 y 443 estén abiertos en los dos lugares que importan: el firewall del VPS y cualquier firewall del proveedor. La validación HTTP habitual de Certbot requiere que el puerto 80 esté disponible temporal o permanentemente. Tu servidor web debe responder a las solicitudes del dominio en ese puerto.

También debes identificar el servidor web y el sistema operativo antes de cambiar nada. Los comandos siguientes presuponen que usas Ubuntu o Debian con Nginx o Apache. Los mismos conceptos de certificados se aplican a AlmaLinux, Rocky Linux y otras distribuciones, pero los nombres de los paquetes y los comandos de servicio pueden variar.

Haz primero una copia de seguridad de la configuración del servidor web. Una instantánea del VPS o una copia de seguridad de `/etc/nginx/` o `/etc/apache2/` te proporciona un punto de reversión limpio. No es un trabajo complicado, simplemente son buenas prácticas operativas. Tu yo del futuro te lo agradecerá a las 2 de la madrugada.

Elige la opción de certificado adecuada​

Para la mayoría de los sitios web, un certificado gratuito de Let's Encrypt es la opción más sensata. Proporciona el mismo cifrado de transporte que se usa en los certificados comerciales y funciona bien para sitios web estándar, API y paneles de control. El certificado es válido durante 90 días, así que la renovación automática forma parte de la instalación; no es un extra opcional.

Un certificado de pago puede ser adecuado cuando tu organización necesita un nivel de validación concreto, condiciones de garantía, una autoridad de certificación específica o un proceso de adquisición gestionado. Los pasos de instalación son ligeramente diferentes porque debes generar una solicitud de firma de certificado, recibir los archivos emitidos e instalar manualmente la cadena de certificados.

Si tu aplicación se ejecuta detrás de Cloudflare, un equilibrador de carga u otro proxy inverso, decide dónde debe terminar TLS. Puede que necesites un certificado en el proxy y otro entre el proxy y el VPS. No des por hecho que un icono de nube naranja o un equilibrador de carga elimina la necesidad de cifrado en el servidor de origen. Depende del modo de seguridad, pero el cifrado de extremo a extremo suele ser la configuración correcta para producción.

Instala un certificado de Let's Encrypt con Certbot​

En Ubuntu o Debian, actualiza la información de los paquetes e instala Certbot con el complemento correspondiente a tu servidor web. Para Nginx, usa:

```bash sudo apt update sudo apt install certbot python3-certbot-nginx ```

Para Apache, instala en su lugar el complemento de Apache:

```bash sudo apt update sudo apt install certbot python3-certbot-apache ```

Antes de ejecutar Certbot, prueba la configuración del servidor web. Para Nginx:

```bash sudo nginx -t ```

Para Apache:

```bash sudo apachectl configtest ```

Corrige los errores que se indiquen antes de continuar. La solicitud del certificado puede completarse correctamente mientras que la recarga falla; el certificado queda en el disco, pero no está activo para los visitantes. Los registros cuentan la misma historia ahora, así que léelos antes de añadir otro elemento que pueda complicar las cosas.

Para un sitio Nginx, solicita el certificado y permite que Certbot actualice el bloque del servidor:

```bash sudo certbot --nginx -d example.com -d www.example.com ```

Para Apache, ejecuta:

```bash sudo certbot --apache -d example.com -d www.example.com ```

Sustituye `example.com` por tu dominio real. Incluye `www` solo si existe en el DNS y está configurado en el servidor web. Durante las indicaciones, proporciona una dirección de correo electrónico activa, acepta las condiciones y elige la opción de redirección si quieres que todo el tráfico HTTP se envíe a HTTPS. En la mayoría de los casos, lo correcto es redirigir. Esto evita que los visitantes lleguen a una versión sin cifrar de la misma página.

Certbot obtendrá el certificado, añadirá las rutas a la configuración del servidor y recargará el servicio correspondiente. Las solicitudes HTTP existentes pueden terminar con normalidad, y una recarga estándar no suele provocar un tiempo de inactividad apreciable. Aun así, hazlo durante un periodo de menor actividad si tu aplicación tiene una configuración compleja de proxy o reglas de reescritura personalizadas.

Instala manualmente un certificado SSL comercial​

Si compraste un certificado, crea una clave privada y una solicitud de firma de certificado en el VPS. Guarda la clave privada en el servidor y nunca la envíes por correo electrónico ni la incluyas en un ticket.

```bash sudo openssl req -new -newkey rsa:2048 -nodes \ -keyout /etc/ssl/private/example.com.key \ -out /etc/ssl/certs/example.com.csr ```

Tu proveedor de certificados emitirá un certificado de servidor y uno o más certificados intermedios. Combina los certificados intermedios en la cadena completa si tu proveedor lo requiere. Con Nginx, el bloque del servidor generalmente necesita las siguientes directivas:

```nginx listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/ssl/certs/example.com.fullchain.pem; ssl_certificate_key /etc/ssl/private/example.com.key; ```

Apache usa las directivas equivalentes `SSLCertificateFile` y `SSLCertificateKeyFile` dentro del host virtual HTTPS. La organización exacta de los archivos puede variar según la distribución y el panel de control, así que no pegues rutas a ciegas. Comprueba también la propiedad y los permisos. Normalmente, solo root y, cuando sea necesario, la cuenta de servicio deberían poder leer la clave privada.

Prueba la configuración y, si es posible, recarga el servicio en lugar de reiniciarlo:

```bash sudo nginx -t && sudo systemctl reload nginx ```

Una recarga conserva los procesos de trabajo activos y aplica la nueva configuración. Es la opción más tranquila cuando está disponible.

Verifica el certificado y el comportamiento de las redirecciones​

Abre tu dominio en una ventana de navegación privada usando `https://`. Comprueba que el dominio mostrado coincida con el certificado y que el navegador indique que la conexión es válida. A continuación, prueba la versión HTTP y confirma que redirige a HTTPS.

Desde el VPS o desde otra terminal, puedes inspeccionar los encabezados de respuesta:

```bash curl -I http://example.com curl -I https://example.com ```

La solicitud HTTP debería devolver una redirección 301 o 308 a la dirección HTTPS. La solicitud HTTPS debería devolver el estado esperado, a menudo 200, 301 o 302, según tu aplicación.

Inspecciona también el certificado directamente:

```bash sudo certbot certificates ```

Para un certificado comercial, usa OpenSSL para comprobar la fecha de expiración y los datos del emisor:

```bash openssl x509 -in /etc/ssl/certs/example.com.fullchain.pem -noout -dates -issuer -subject ```

No te limites a comprobar el candado. El contenido mixto puede seguir afectando a las páginas si los scripts, las imágenes, las fuentes o las llamadas a la API se cargan con URL `http://`. Las herramientas para desarrolladores del navegador mostrarán estas advertencias. Actualiza las URL codificadas de forma fija, las variables de entorno de la aplicación y cualquier ajuste de CDN o de recursos.

Convierte la renovación en una tarea supervisada​

Los certificados de Let's Encrypt deben renovarse antes de que transcurran 90 días. Los paquetes modernos de Certbot suelen instalar automáticamente un temporizador de systemd, pero compruébalo en lugar de confiarte porque el servidor esté tranquilo.

```bash sudo systemctl list-timers | grep certbot sudo certbot renew --dry-run ```

La prueba en seco es la comprobación que realmente importa. Confirma que el VPS podrá completar la validación futura y recargar el servidor web después de la renovación. Si falla, resuélvelo mientras el certificado actual siga siendo válido.

En el caso de los certificados comerciales, anota la fecha de expiración con suficiente antelación. La renovación suele ser manual, a menos que tu proveedor de certificados o plataforma de gestión admita la automatización. Añade supervisión de la expiración del certificado cuando sea posible. Un certificado válido que expira sin que nadie se dé cuenta sigue siendo una interrupción del servicio, solo que con un error del navegador de aspecto muy oficial.

En kodu.cloud, el soporte operativo gestionado y la supervisión pueden reducir este tipo de riesgo recurrente, especialmente cuando un VPS aloja varios dominios de clientes o servicios de producción. El objetivo es sencillo: los certificados deben renovarse sin hacer ruido y tu equipo no debería tener que acordarse de ellos cada trimestre.

Problemas habituales después de instalar SSL​

Una discrepancia del certificado suele significar que la solicitud llega al VPS equivocado, que el host virtual incorrecto está actuando como predeterminado o que se omitió un nombre de host como `www` al solicitar el certificado. Comprueba primero el DNS y luego revisa los nombres de servidor configurados en el servidor web.

Un fallo de validación suele deberse al puerto 80, a la propagación del DNS o a la configuración del proxy. Si el dominio usa una CDN, asegúrate de que sus registros DNS y el modo de proxy permitan el método de validación que seleccionaste. La validación mediante desafío DNS suele ser mejor para los certificados comodín, pero requiere acceso a la API de DNS o un proceso manual para crear el registro DNS.

Si el sitio web entra en un bucle de redirección después de forzar HTTPS, busca redirecciones conflictivas en la aplicación, en Nginx o Apache y en cualquier proxy inverso. Es posible que las aplicaciones detrás de un proxy necesiten un ajuste de encabezados reenviados de confianza para reconocer que la solicitud original era HTTPS. Cuando ocurre, la situación del DNS no es precisamente bonita, pero se puede controlar si se asigna claramente a un único componente la gestión de las redirecciones.

Incluye el certificado, la configuración del servidor web y las comprobaciones de renovación en la misma rutina operativa. Un certificado SSL instalado correctamente debería convertirse en una infraestructura aburrida: presente, verificada y sin reclamar atención.

Andres Saar, ingeniero de atención al cliente