Un certificado SSL gratuito cifra la conexión entre tus visitantes y tu sitio web, protegiendo contraseñas, pagos y datos personales. Puedes obtener uno en unos 5 minutos sin gastar un centavo.
Resumen rápido:
- Abre gethttps.com/app/setup — sin instalación, sin cuenta
- Introduce tu nombre de dominio
- Verifica la propiedad del dominio (coloca un archivo en tu servidor o añade un registro DNS)
- Descarga tus archivos de certificado
- Instala en tu servidor (Nginx, Apache, cPanel, WordPress, IIS)
Sigue leyendo para la guía completa con todos los detalles.
Por qué necesitas un certificado SSL
Antes de empezar, si te preguntas si tu sitio realmente necesita SSL:
- Los navegadores marcan los sitios HTTP como «No seguro» — Chrome, Firefox y Edge muestran una advertencia en la barra de dirección. Los visitantes se van.
- Google usa HTTPS como señal de posicionamiento — desde 2014. Los sitios HTTP se posicionan peor.
- Los formularios y logins transmiten datos en texto plano sin HTTPS — cualquiera en la red puede leer contraseñas, números de tarjeta de crédito, datos personales.
- Las páginas HTTP pueden ser modificadas en tránsito — los ISP y atacantes pueden inyectar anuncios, rastreo o malware en tus páginas.
- HTTPS es gratis — no hay razón para no usarlo.
Si tu sitio ya está en HTTPS, puedes ir directamente a renovación.
4 formas de obtener un certificado SSL gratuito
| Método | Ideal para | Instalación | Renovación automática | Tiempo |
|---|---|---|---|---|
| GetHTTPS (navegador) | Cualquiera — sin instalación, sin acceso al servidor necesario | Manual | No | 5 min |
| Tu proveedor de hosting | Hosting compartido con cPanel/Plesk | Automática | Generalmente sí | 2 min |
| Certbot (CLI) | Administradores de servidores con acceso root | Automática | Sí | 10 min |
| Cloudflare (CDN) | Sitios que ya usan Cloudflare | Automática | Sí | 5 min |
Esta guía se enfoca en el Método 1 (GetHTTPS) porque funciona en cualquier lugar: hosting compartido, VPS, servidor dedicado o cualquier plataforma donde puedas subir archivos. Para otros métodos, consulta los enlaces anteriores.
Método 1: GetHTTPS (recomendado — funciona en cualquier lugar)
Requisitos previos
- Un nombre de dominio registrado apuntando a un servidor que controlas
- Acceso a uno de los siguientes (para verificación del dominio):
- El sistema de archivos de tu servidor web — para colocar un archivo de verificación (desafío HTTP-01)
- La configuración DNS de tu dominio — para añadir un registro TXT (desafío DNS-01)
- Un navegador moderno — Chrome, Firefox, Edge o Safari
¿Qué tipo de desafío debería usar? HTTP-01 es más simple para la mayoría de las personas. DNS-01 es necesario para certificados comodín (
*.example.com). Consulta nuestra guía de HTTP-01 y guía de DNS-01 para explicaciones detalladas.
Paso 1: Abre GetHTTPS
Ve a gethttps.com/app/setup.
GetHTTPS genera automáticamente dos pares de claves en tu navegador:
- Clave de cuenta — Un par de claves ECDSA P-256 que identifica tu cuenta de Let’s Encrypt. Firma todas las solicitudes ACME.
- Clave del certificado — El par de claves para tu certificado SSL. ECDSA P-256 por defecto (recomendado) o RSA 2048.
Ambas claves se crean usando la Web Crypto API integrada en tu navegador. Existen solo en la memoria del navegador y nunca se envían a ningún servidor, ni siquiera al nuestro. Esta es la ventaja clave de privacidad sobre herramientas como SSL For Free (que genera claves en su servidor) o ZeroSSL (que puede generar claves del lado del servidor dependiendo del método).
Paso 2: Añade tus nombres de dominio
Introduce los dominios que quieres proteger:
| Lo que quieres | Qué introducir | Notas |
|---|---|---|
| Dominio único | example.com | Configuración más básica |
| Dominio + www | example.com + www.example.com | Recomendado para la mayoría de los sitios |
| Comodín | *.example.com | Cubre todos los subdominios; requiere DNS-01 |
| Múltiples dominios | example.com + blog.example.com + shop.example.com | Certificado SAN |
Consejo: Si introduces example.com, GetHTTPS te sugiere añadir también www.example.com (y viceversa). La mayoría de los sitios deberían proteger ambos.
Paso 3: Completa la verificación del dominio
Let’s Encrypt necesita verificar que controlas el dominio. Elige uno de dos métodos:
Opción A: Desafío HTTP-01 (más simple, para la mayoría de personas)
Let’s Encrypt proporciona un token. Colocas un archivo en tu servidor web en una URL específica.
- GetHTTPS te muestra un nombre de archivo y un contenido del archivo (una cadena larga de token)
- Crea el archivo en tu servidor:
http://yourdomain.com/.well-known/acme-challenge/TOKEN_FILENAME - El archivo debe ser accesible por HTTP (puerto 80) — incluso si tu sitio ya usa HTTPS
- Haz clic en Verify en GetHTTPS
Cómo crear el archivo — por plataforma:
Acceso SSH (Nginx/Apache en Linux):
# Crear el directorio (si no existe)
mkdir -p /var/www/html/.well-known/acme-challenge/
# Crear el archivo de desafío — usa los valores EXACTOS de GetHTTPS
echo "TOKEN_CONTENT_SHOWN_IN_GETHTTPS" > /var/www/html/.well-known/acme-challenge/TOKEN_FILENAME
# Verificar que es accesible
curl http://yourdomain.com/.well-known/acme-challenge/TOKEN_FILENAME
Administrador de archivos de cPanel:
- Ve al Administrador de archivos → navega a
public_html - Crea la carpeta
.well-known→ dentro de ella, creaacme-challenge - Crea un nuevo archivo con el nombre del token, pega el contenido del token
- Asegúrate de que el archivo sea legible (permisos 644)
FTP:
- Conéctate por FTP a la raíz de tu sitio
- Navega a (o crea)
.well-known/acme-challenge/ - Sube un archivo de texto con el nombre del token que contenga el contenido del token
Problema común: Algunos servidores web no sirven archivos de
.well-knownpor defecto. Si obtienes un error 404, revisa la configuración de tu servidor. Nginx puede necesitarlocation ~ /\.well-known { allow all; }en la configuración.
Opción B: Desafío DNS-01 (necesario para comodines)
Añades un registro TXT a la configuración DNS de tu dominio.
- GetHTTPS te muestra un nombre de registro (ej.,
_acme-challenge.example.com) y un valor de registro (un hash largo) - Ve a tu proveedor DNS y añade el registro TXT
- Espera la propagación DNS (generalmente 1-5 minutos)
- Haz clic en Verify en GetHTTPS
Referencia rápida de proveedores DNS:
| Proveedor | Dónde añadir el registro TXT | Configuración TTL |
|---|---|---|
| Cloudflare | DNS → Records → Add record → Type: TXT | Auto |
| AWS Route 53 | Hosted zones → tu dominio → Create record → TXT | 300 |
| GoDaddy | DNS Management → Add → Type: TXT | 1 Hour |
| Namecheap | Domain List → Manage → Advanced DNS → Add new record → TXT | Automatic |
| Google Domains | DNS → Custom records → Manage → Create new record → TXT | Auto |
| DigitalOcean | Networking → Domains → tu dominio → Add record → TXT | 30 |
Nombre del registro: _acme-challenge (algunos proveedores añaden automáticamente tu dominio, otros no — verifica la vista previa)
Valor del registro: La cadena hash que muestra GetHTTPS (copia y pega exactamente)
Pre-verificación (función exclusiva de GetHTTPS)
Antes de enviar a Let’s Encrypt, GetHTTPS pre-verifica tu configuración de desafío desde la internet pública vía la API DNS-over-HTTPS de Google. Esto detecta errores como:
- Contenido o permisos incorrectos del archivo
- Archivo no accesible en puerto 80
- Registro DNS no propagado aún
- Firewall bloqueando la solicitud
- Proxy de Cloudflare interceptando el desafío
Si la pre-verificación falla, GetHTTPS te muestra exactamente qué está mal, para que puedas corregirlo antes de gastar un intento de límite de tasa.
Esta es una función que otras herramientas basadas en navegador no tienen. SSL For Free y ZeroSSL envían directamente a la CA, y solo te enteras de los errores después.
Paso 4: Descarga tus archivos de certificado
Una vez que todos los desafíos se aprueban, Let’s Encrypt emite tu certificado. GetHTTPS te da cuatro archivos:
| Archivo | Qué es | Cuándo lo necesitas |
|---|---|---|
privkey.pem | Tu clave privada — ¡mantenla en secreto! | Todos los servidores |
cert.pem | Tu certificado SSL (solo la entidad final) | Apache, algunas configuraciones |
chain.pem | El certificado CA intermedio de Let’s Encrypt | Apache, algunas configuraciones |
fullchain.pem | cert.pem + chain.pem combinados | Nginx, la mayoría de servidores |
Descarga los cuatro archivos. Diferentes servidores necesitan diferentes combinaciones; tener los cuatro significa que estás cubierto. Consulta formatos de certificados explicados para más detalles.
Seguridad: Almacena
privkey.pemde forma segura. Cualquiera que tenga este archivo puede suplantar tu sitio web. No lo envíes por email, no lo subas a Git, no lo pongas en una carpeta pública.
Paso 5: Instala en tu servidor
Elige tu plataforma:
| Plataforma | Guía | Archivos clave necesarios |
|---|---|---|
| Nginx | Guía completa → | fullchain.pem + privkey.pem |
| Apache | Guía completa → | cert.pem + chain.pem + privkey.pem |
| cPanel | Guía completa → | Pegar contenido de los tres archivos |
| WordPress | Guía completa → | Depende del hosting (cPanel/Nginx/Apache) |
| Windows IIS | Guía completa → | Convertir a PFX primero |
| Docker | Guía completa → | Montar fullchain.pem + privkey.pem |
| Plesk | Guía completa → | Pegar contenido de los tres archivos |
| AWS | Guía completa → | Subir a EC2 o importar a ACM |
| Node.js | Guía completa → | fullchain.pem + privkey.pem en código |
Instalación rápida — Nginx:
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/ssl/fullchain.pem;
ssl_certificate_key /etc/ssl/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
add_header Strict-Transport-Security "max-age=63072000" always;
root /var/www/html;
index index.html;
}
sudo nginx -t && sudo systemctl reload nginx
Instalación rápida — Apache:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile /etc/ssl/cert.pem
SSLCertificateKeyFile /etc/ssl/privkey.pem
SSLCertificateChainFile /etc/ssl/chain.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder off
DocumentRoot /var/www/html
</VirtualHost>
sudo apachectl configtest && sudo systemctl reload apache2
Paso 6: Redirige HTTP a HTTPS
Fuerza todo el tráfico a usar la conexión cifrada. Sin esto, los visitantes en http:// no se benefician de tu certificado.
Nginx:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
Apache (.htaccess):
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Guía completa de redirección con www/no-www, escenarios de proxy y solución de problemas →
Paso 7: Verifica que todo funcione
Verificación en el navegador:
- Visita
https://tudominio.com - Haz clic en el icono de candado → «Certificate» o «La conexión es segura»
- Verifica: Emitido por «Let’s Encrypt», expira en ~90 días, el dominio coincide
Verificación por línea de comandos:
# Mostrar detalles del certificado
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates
# Salida esperada:
# subject=CN=example.com
# issuer=C=US, O=Let's Encrypt, CN=R10
# notBefore=May 8 00:00:00 2026 GMT
# notAfter=Aug 6 00:00:00 2026 GMT
Verificación en línea: Introduce tu dominio en SSL Labs Server Test para un informe completo que cubre cadena de certificados, soporte de protocolos, suites de cifrado y vulnerabilidades conocidas.
Verifica contenido mixto: Abre las DevTools del navegador (F12) → pestaña Console. Busca advertencias de «Mixed Content»: son recursos HTTP en tu página HTTPS. Cómo solucionar contenido mixto →
Renovación
Los certificados de Let’s Encrypt expiran después de 90 días. Renueva antes del día 60 para darte un margen de seguridad.
Con GetHTTPS (manual):
- Visita gethttps.com/app/setup de nuevo
- Reintroduce tu(s) dominio(s) y completa un nuevo desafío
- Reemplaza los archivos del certificado en tu servidor
- Recarga tu servidor web (
sudo systemctl reload nginx)
Con Certbot (automático): Si quieres renovación sin intervención, instala Certbot en tu servidor. Muchos equipos usan GetHTTPS para el primer certificado y Certbot para la renovación automática continua.
Próximamente: certificados de 47 días. El CA/Browser Forum votó reducir la validez máxima de certificados a 47 días para 2029. Qué significa esto para ti →
Método 2: Tu proveedor de hosting (lo más fácil si está disponible)
Muchos hosts incluyen SSL gratuito:
| Host | Cómo activar | Renovación automática |
|---|---|---|
| Hostinger | hPanel → Security → SSL | ✅ AutoSSL |
| SiteGround | Site Tools → Security → SSL Manager | ✅ |
| Bluehost | My Sites → Security → SSL | ✅ |
| Namecheap | cPanel → SSL/TLS Status | ✅ AutoSSL |
| GoDaddy | cPanel → SSL/TLS (si hosting cPanel) | ✅ |
| DigitalOcean | Sin integración — usa Certbot o GetHTTPS | ❌ |
| AWS | ACM para balanceadores de carga, Certbot para EC2 | ✅ (ACM) |
Si tu host proporciona SSL gratuito, úsalo: es el camino más simple. Si no (o si quieres más control), usa GetHTTPS.
Método 3: Certbot (para administradores de servidores)
Certbot es una herramienta CLI que automatiza certificados de Let’s Encrypt en tu servidor. Requiere acceso root.
# Instalar (Ubuntu)
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# Obtener certificado + auto-configurar Nginx
sudo certbot --nginx -d example.com -d www.example.com
# La renovación automática se configura automáticamente
sudo systemctl list-timers | grep certbot
Comparativa completa GetHTTPS vs Certbot →
Método 4: Cloudflare (SSL basado en proxy)
Si usas Cloudflare como tu CDN, Universal SSL está incluido gratis. Pero entiende: el SSL de Cloudflare significa que tu tráfico se descifra en el edge de Cloudflare, no en tu servidor. ¿Está bien para ti? →
Solución de problemas
El archivo del desafío devuelve 404
- Revisa la ruta: El archivo debe estar exactamente en
/.well-known/acme-challenge/TOKEN— no en un subdirectorio - Revisa los permisos: El archivo debe ser legible por el servidor web (chmod 644)
- Nginx: Añade
location ~ /\.well-known { allow all; }si tu configuración bloquea archivos con punto - Cloudflare: Cambia temporalmente el DNS a «DNS only» (nube gris) durante el desafío HTTP-01
- cPanel: Asegúrate de que
.well-knownno esté oculto — algunos administradores de archivos ocultan directorios con punto
No se encuentra el registro DNS
- Espera más — algunos proveedores DNS tardan 5-15 minutos en propagar
- Revisa el nombre del registro: Debería ser
_acme-challenge(sin tu dominio añadido, o con él — depende del proveedor). La pre-verificación de GetHTTPS lo confirma. - Revisa el tipo de registro: Debe ser TXT, no CNAME ni A
- Verifica manualmente:
dig TXT _acme-challenge.yourdomain.com +short
Error de «Too many requests» / límite de tasa
Let’s Encrypt permite 50 certificados por dominio registrado por semana. Si alcanzas este límite:
- Espera una semana e intenta de nuevo
- Usa el entorno staging para pruebas (GetHTTPS usa staging por defecto en desarrollo)
- Pre-verifica tus desafíos antes de enviar para evitar intentos desperdiciados
El navegador muestra «No seguro» después de la instalación
- Certificado no instalado: Verifica que la configuración de tu servidor apunte a los archivos correctos
- Contenido mixto: Tu página carga recursos HTTP. Guía de solución →
- Redirección no activa: El tráfico HTTP no se está redirigiendo a HTTPS. Guía de redirección →
- Certificado expirado: Verificar vencimiento →
Error de «Certificate chain incomplete»
Estás usando cert.pem en lugar de fullchain.pem (Nginx) o falta SSLCertificateChainFile (Apache). El servidor necesita el certificado intermedio para demostrar la cadena de confianza.
¿Por qué GetHTTPS sobre otras herramientas gratuitas?
| Característica | GetHTTPS | ZeroSSL | SSL For Free | Certbot |
|---|---|---|---|---|
| Instalación | Ninguna (navegador) | Ninguna (web) | Ninguna (web) | Instalación CLI necesaria |
| Clave privada | Generada en navegador (Web Crypto) | ⚠️ Puede ser generada en servidor | ⚠️ Generada en servidor | Generada en servidor |
| Límite de certs gratis | Ilimitados | 3 | 3 | Ilimitados |
| Comodín (gratis) | ✅ | ❌ (pago) | ❌ | ✅ |
| Renovación automática | ❌ | ❌ | ❌ | ✅ |
| Pre-verificación | ✅ | ❌ | ❌ | ❌ |
| Código abierto | No | No | No | Sí (Apache 2.0) |
| Directo a Let’s Encrypt | ✅ | Vía ZeroSSL | Vía ZeroSSL | ✅ |
Comparativa completa de todos los proveedores SSL gratuitos →
Preguntas frecuentes
¿Realmente puedo obtener un certificado SSL gratis?
Sí. Let’s Encrypt es una Autoridad Certificadora sin ánimo de lucro respaldada por Mozilla, Google, EFF y otros. Emite certificados de validación de dominio (DV) gratuitos: el mismo tipo por el que muchas empresas pagan $50-200/año. Más de 300 millones de sitios web usan Let’s Encrypt, con un 63,9% de cuota de mercado global de CAs.
¿Un certificado SSL gratuito es tan seguro como uno de pago?
Sí. Todos los certificados SSL, gratuitos o de pago, usan el mismo cifrado TLS. Un certificado DV gratuito de Let’s Encrypt proporciona la misma fuerza de cifrado que un certificado EV de $500 de DigiCert. La única diferencia es el nivel de validación (lo que la CA verifica sobre tu identidad), no el cifrado. Comparativa detallada →
¿Cuánto dura un certificado SSL gratuito?
Los certificados de Let’s Encrypt son válidos por 90 días. Esta validez corta es intencional: limita el daño si una clave se ve comprometida y fomenta la automatización. Renueva en el día 60 para tener un margen de seguridad. Nota: para 2029, todos los certificados estarán limitados a 47 días.
¿Necesito acceso SSH/root a mi servidor?
No con GetHTTPS. Necesitas la capacidad de:
- Colocar un archivo en tu servidor web (vía FTP, Administrador de archivos de cPanel o cualquier método) — para HTTP-01
- Añadir un registro DNS (vía tu registrador de dominios o proveedor DNS) — para DNS-01
Si no tienes acceso en absoluto, verifica si tu proveedor de hosting ofrece SSL gratuito a través de su panel de control.
¿Puedo obtener un certificado comodín gratis?
Sí. GetHTTPS soporta certificados comodín (*.example.com) usando el desafío DNS-01. Esta es una función que muchos competidores (ZeroSSL, SSL For Free) restringen a planes de pago. Necesitarás acceso a la configuración DNS de tu dominio.
¿Puedo proteger múltiples dominios con un solo certificado?
Sí. Introduce todos tus dominios en GetHTTPS — hasta 100 nombres por certificado. Esto crea un certificado SAN (multi-dominio). Cada dominio necesita su propia verificación de desafío.
¿Cuál es la diferencia entre los desafíos HTTP-01 y DNS-01?
HTTP-01: Colocas un archivo en tu servidor. Más simple, funciona para dominios únicos. Requiere acceso al puerto 80. DNS-01: Añades un registro TXT a tu DNS. Necesario para comodines. Funciona aunque el puerto 80 esté bloqueado. Guía detallada de HTTP-01 → | Guía de DNS-01 →
¿Qué pasa si mi certificado expira?
Los navegadores muestran una advertencia de seguridad a página completa («Tu conexión no es privada»). Los visitantes no pueden acceder a tu sitio de forma segura, y los motores de búsqueda pueden desindexar tus páginas. Cómo verificar el vencimiento → | Cómo renovar →
¿Puedo cambiar de GetHTTPS a Certbot (o viceversa)?
Sí. Los archivos de certificado son formato PEM estándar. Puedes generar el primer certificado con GetHTTPS y después instalar Certbot para renovación automática. O usar Certbot inicialmente y cambiar a GetHTTPS cuando necesites una re-emisión rápida sin acceso al servidor. Las herramientas no entran en conflicto.