Cómo configurar SSL/TLS en PrestaShop (Let's Encrypt)
¿Por qué necesitas SSL/TLS en tu PrestaShop?
Si tienes una tienda online con PrestaShop, la seguridad no es un capricho, es una necesidad absoluta. Cuando tus clientes introducen sus datos personales, direcciones o información de tarjetas de crédito, esa información viaja desde su navegador hasta tu servidor. Sin un certificado SSL, esos datos viajan en "texto plano", lo que significa que cualquier persona con conocimientos técnicos podría interceptarlos y leerlos.
Activar https prestashop no solo protege a tus clientes, sino que también genera confianza. Los navegadores modernos, como Chrome o Firefox, muestran un candado verde cuando un sitio tiene SSL correctamente instalado. Si no lo tienes, mostrarán un mensaje de "No seguro" que ahuyentará a cualquier comprador potencial.
Además, Google utiliza la seguridad como factor de posicionamiento. Tener ssl prestashop activo te da una pequeña ventaja competitiva en los resultados de búsqueda. Y no solo eso, si estás usando prestashop seguridad como parte de tu estrategia, el SSL es el primer pilar sobre el que se construye todo lo demás.
La buena noticia es que ya no necesitas pagar decenas de euros al año por un certificado. Let's Encrypt ofrece certificados gratuitos, automáticos y reconocidos por todos los navegadores. En este artículo te voy a guiar paso a paso para que configures lets encrypt prestashop sin complicaciones, incluso si no eres un experto en sistemas.
Requisitos previos antes de empezar
Antes de lanzarnos a configurar nada, necesitamos asegurarnos de que tu servidor cumple unos mínimos. No te preocupes, no es nada del otro mundo, pero es importante verificarlo para evitar problemas a mitad del proceso.
Primero, necesitas acceso a tu servidor. Esto puede ser a través de SSH (si te manejas con soltura) o a través del panel de control de tu hosting. Si tu hosting es gestionado, es muy probable que ya tengas una opción para activar SSL gratuitos sin tocar nada técnico. Pero si tienes un VPS o un servidor dedicado, vamos a necesitar acceso de administrador.
Segundo, asegúrate de que tu dominio apunta correctamente al servidor. Esto significa que el registro DNS debe estar configurado y propagado. Si acabas de cambiar los DNS, espera unas horas antes de intentar generar el certificado, porque si el dominio no resuelve correctamente, la validación fallará.
Tercero, necesitas tener instalado Certbot, que es el cliente oficial de Let's Encrypt. En la mayoría de distribuciones Linux se instala con un simple comando, pero ya lo veremos más adelante.
Por último, pero no menos importante, haz una copia de seguridad de tu tienda. Tanto de los archivos como de la base de datos. Esto es una regla de oro en prestashop seguridad y te ahorrará muchos dolores de cabeza si algo sale mal.
[WARNING] No intentes configurar SSL en un servidor de producción sin hacer una copia de seguridad completa antes. Un fallo en la configuración podría dejar tu tienda inaccesible temporalmente.
Paso 1: Instalar Certbot en tu servidor Linux
Certbot es la herramienta que nos permitirá solicitar y renovar automáticamente los certificados de Let's Encrypt. La instalación varía ligeramente según la distribución de Linux que uses, pero te muestro los comandos más comunes.
Para Ubuntu y Debian
Abre tu terminal y ejecuta los siguientes comandos:
sudo apt update
sudo apt install certbot python3-certbot-apache
Si tu servidor web es Nginx en lugar de Apache, el paquete sería python3-certbot-nginx. En este artículo nos centraremos en Apache, que es el más común en instalaciones de PrestaShop, pero el proceso es similar.
Para CentOS o Rocky Linux
En estas distribuciones el comando sería:
sudo dnf install certbot python3-certbot-apache
Una vez instalado, verifica que funciona ejecutando certbot --version. Si te muestra un número de versión, todo está correcto.
[INFO] Si tu hosting es gestionado y usas un panel como cPanel o Plesk, es probable que ya tengan integrado Let's Encrypt. En ese caso, no necesitas instalar Certbot manualmente, sino que puedes generar el certificado desde la interfaz gráfica del panel.
Paso 2: Generar el certificado SSL con Let's Encrypt
Ahora viene la parte emocionante. Vamos a solicitar nuestro certificado ssl gratuito. Antes de ejecutar el comando, asegúrate de que tu sitio web está accesible y que el dominio que quieres proteger (por ejemplo, tutienda.com) tiene un registro DNS apuntando a tu servidor.
El comando básico para generar el certificado es:
sudo certbot --apache -d tutienda.com -d www.tutienda.com
Te preguntará por un correo electrónico para notificaciones de renovación y aceptar los términos de servicio. También te preguntará si quieres redirigir todo el tráfico HTTP a HTTPS. Te recomiendo que elijas la opción de redirigir, porque es exactamente lo que necesitamos para activar https prestashop.
¿Qué pasa si el comando falla?
Si Certbot te da un error de validación, lo más común es que sea por dos motivos:
- El dominio no resuelve correctamente al servidor.
- El firewall está bloqueando el puerto 80 (HTTP) o el 443 (HTTPS).
Para verificar que el dominio resuelve correctamente, puedes usar ping tutienda.com o dig tutienda.com. Debe aparecer la IP de tu servidor.
Si el problema es el firewall, asegúrate de que los puertos 80 y 443 están abiertos. En Ubuntu, con UFW, sería:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Una vez que el certificado se genere correctamente, Certbot te dirá dónde se han guardado los archivos. Normalmente están en /etc/letsencrypt/live/tutienda.com/. No necesitas tocar esos archivos, ya que Certbot se encarga de configurar Apache automáticamente.
Paso 3: Configurar PrestaShop para usar HTTPS
Ahora que el servidor web ya tiene el certificado instalado, toca decirle a PrestaShop que use HTTPS. PrestaShop guarda la URL de la tienda en su configuración, y si no la actualizamos, seguirá generando enlaces con http://.
Opción A: Desde el panel de administración
Esta es la forma más sencilla y la que recomiendo para la mayoría de usuarios.
- Accede a tu panel de administración de PrestaShop (normalmente en
tutienda.com/admin). - Ve a Parámetros avanzados > General.
- Busca la opción Activar SSL y actívala.
- También activa la opción Activar SSL en todas las páginas.
- Guarda los cambios.
PrestaShop se recargará y a partir de ese momento todas las URLs generadas usarán https://.
Opción B: Editando el archivo de configuración
Si por alguna razón no puedes acceder al panel de administración, siempre puedes editar el archivo config/settings.inc.php (en versiones antiguas) o app/config/parameters.php (en versiones modernas).
Busca las líneas que contienen las URLs de la tienda y cambia http:// por https://. Por ejemplo:
define('_PS_BASE_URL_', 'https://tutienda.com');
[WARNING] Editar archivos de configuración manualmente es arriesgado. Si no estás seguro de lo que haces, usa la opción del panel de administración. Un error aquí puede dejar tu tienda inaccesible.
Paso 4: Redirigir todo el tráfico HTTP a HTTPS
Aunque Certbot ya configuró la redirección en Apache, es buena práctica asegurarse de que cualquier acceso a través de http:// se redirija automáticamente a https://. Esto evita que haya contenido mixto (parte en HTTP y parte en HTTPS), que es un problema común en prestashop seguridad.
Si usaste Certbot con la opción de redirigir, esto ya está hecho. Pero si no, puedes añadir manualmente una redirección en el archivo .htaccess de PrestaShop.
Abre el archivo .htaccess en la raíz de tu instalación de PrestaShop y añade al principio:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Guarda el archivo y prueba a acceder a http://tutienda.com. Deberías ser redirigido automáticamente a https://tutienda.com.
[TIP] Después de modificar el
.htaccess, ve al panel de administración de PrestaShop y en Parámetros avanzados > Rendimiento pulsa el botón "Vaciar caché". Esto evita que PrestaShop siga usando la caché antigua con URLs HTTP.
Paso 5: Actualizar URLs en la base de datos
Este paso es crucial. PrestaShop guarda muchas URLs en su base de datos: imágenes, enlaces de productos, categorías, etc. Si no actualizamos estas URLs, el navegador intentará cargar recursos desde http://, lo que provocará el famoso error de "contenido mixto" o que las imágenes no se muestren.
Para actualizar todas las URLs de la base de datos, puedes usar una consulta SQL. Accede a tu phpMyAdmin o a la línea de comandos de MySQL y ejecuta:
UPDATE ps_shop_url SET domain = 'tutienda.com', domain_ssl = 'tutienda.com' WHERE id_shop = 1;
Reemplaza ps_ por el prefijo de tu base de datos si lo has cambiado. También puedes actualizar las URLs de los productos y categorías:
UPDATE ps_product SET link_rewrite = REPLACE(link_rewrite, 'http://', 'https://');
Pero esto puede ser complicado si no estás acostumbrado a SQL. Una alternativa más sencilla es usar un módulo de PrestaShop que haga la actualización automáticamente. Hay varios gratuitos en el marketplace oficial.
[INFO] Si tu tienda es pequeña y no tiene muchas imágenes o productos, puedes probar a vaciar la caché en el panel de administración y ver si las URLs se actualizan solas. En muchos casos, PrestaShop regenera las URLs automáticamente cuando se activa SSL.
Paso 6: Verificar que todo funciona correctamente
Una vez que has hecho todos los pasos anteriores, es hora de comprobar que todo funciona. No quieres descubrir un fallo cuando un cliente te reporte que no puede pagar.
Comprobaciones básicas
- Accede a
https://tutienda.comy verifica que el candado aparece en la barra del navegador. - Haz clic en el candado y revisa que el certificado es válido y que está emitido por Let's Encrypt.
- Navega por varias páginas: producto, carrito, checkout. Asegúrate de que todas las imágenes cargan correctamente.
- Abre la consola de desarrollador del navegador (F12) y en la pestaña "Consola" busca errores de contenido mixto. Si aparece algún error, significa que hay recursos que siguen cargando desde HTTP.
Herramientas online
Puedes usar herramientas como SSL Labs o Why No Padlock para analizar tu tienda en profundidad. Estas herramientas te dirán si hay problemas con el certificado o con contenido mixto.
Paso 7: Configurar la renovación automática del certificado
Una de las grandes ventajas de lets encrypt prestashop es que los certificados son gratuitos, pero tienen una caducidad de 90 días. Para no tener que renovarlos manualmente cada tres meses, vamos a configurar una tarea automática.
Certbot incluye un temporizador que se instala automáticamente. Para verificarlo, ejecuta:
sudo systemctl status certbot.timer
Si está activo y en funcionamiento, no tienes que hacer nada más. El sistema renovará automáticamente los certificados cuando falten menos de 30 días para la caducidad.
Si por alguna razón no está activo, puedes forzar la renovación manualmente con:
sudo certbot renew
Y para verificar que la renovación funciona, puedes hacer una prueba en seco:
sudo certbot renew --dry-run
[WARNING] Si tu servidor está detrás de un proxy o un balanceador de carga, la renovación automática puede fallar porque Let's Encrypt no puede conectarse a tu servidor en el puerto 80. En ese caso, necesitarás configurar la validación por DNS en lugar de por HTTP. Es un tema más avanzado, pero si usas un hosting estándar, no tendrás este problema.
Solución de problemas comunes
Aquí te dejo una lista con los problemas más habituales y cómo solucionarlos:
"El certificado no se renueva automáticamente"
Revisa que el temporizador de Certbot está activo. Si tu servidor tiene un firewall muy restrictivo, el puerto 80 debe estar abierto para que Let's Encrypt pueda validar el dominio.
"Mi tienda carga pero sin candado, o con candado rojo"
Esto suele ser por contenido mixto. Revisa la consola del navegador y busca recursos que se carguen desde http://. Puede ser una imagen de un slider, una fuente o incluso un script de un módulo. Activa la opción "Activar SSL en todas las páginas" en PrestaShop y vacía la caché.
"No puedo acceder al panel de administración después de activar SSL"
Esto ocurre a veces porque el navegador guarda en caché la URL antigua. Prueba a acceder directamente con https://tutienda.com/admin y fuerza la recarga con Ctrl + F5. Si sigue sin funcionar, edita el archivo config/settings.inc.php y busca la opción de SSL para desactivarla temporalmente.
"Let's Encrypt no puede emitir el certificado para mi dominio"
Asegúrate de que el dominio no tiene caracteres especiales o subdominios raros. También verifica que el DNS está propagado. Puedes usar la herramienta dig o nslookup para comprobarlo.
Preguntas frecuentes (FAQ)
¿Es seguro usar Let's Encrypt para una tienda online?
Sí, totalmente. Los certificados de Let's Encrypt son tan seguros como los de pago. La única diferencia es que caducan cada 90 días, pero con la renovación automática eso no es un problema.
¿Necesito un certificado SSL para cada subdominio?
Depende. Si tienes tutienda.com y blog.tutienda.com, puedes generar un certificado que cubra ambos con un wildcard, pero eso requiere un poco más de configuración. Para la mayoría de casos, un certificado por dominio es suficiente.
¿Qué pasa si mi hosting no soporta Let's Encrypt?
La mayoría de hostings modernos lo soportan. Si el tuyo no, considera cambiar de proveedor. La seguridad de tu tienda no es negociable.
¿Cuánto tarda en activarse el SSL?
El proceso completo, desde que ejecutas Certbot hasta que PrestaShop usa HTTPS, puede llevar unos 15-20 minutos si todo va bien. La emisión del certificado es casi instantánea.
¿Puedo usar Let's Encrypt con Syspanel?
Si usas Syspanel (antes conocido como HestiaCP) como panel de control, tienes una ventaja: el acceso al panel se realiza a través del puerto 2106 (por ejemplo, https://tuservidor.com:2106). Desde la interfaz de Syspanel puedes gestionar certificados SSL de forma gráfica, sin necesidad de usar la línea de comandos. Simplemente ve a la sección de "Web" o "SSL" de tu dominio y selecciona la opción de Let's Encrypt. Syspanel se encargará de la instalación y renovación automática.
¿Necesito reiniciar Apache después de la configuración?
Normalmente Certbot lo hace automáticamente. Pero si tienes problemas, puedes reiniciar Apache manualmente con sudo systemctl restart apache2 (en Ubuntu) o sudo systemctl restart httpd (en CentOS).
Conclusión final
Configurar ssl prestashop con Let's Encrypt no es tan complicado como parece. Siguiendo estos pasos, tendrás tu tienda protegida con HTTPS en menos de una hora. Recuerda que
