GetHTTPS es un cliente ACME basado en navegador que emite certificados HTTPS gratuitos de Let’s Encrypt, sin ningún componente del lado del servidor.
La arquitectura
Los clientes ACME tradicionales como Certbot y acme.sh se ejecutan en tu servidor. Necesitan acceso al shell, permisos de root y, a menudo, un cron job para renovar certificados.
GetHTTPS adopta un enfoque diferente: todo se ejecuta en tu pestaña del navegador. Tu clave privada se genera localmente con la Web Crypto API y nunca sale de la página.
Cómo funciona el flujo
-
Generación de la clave de cuenta — Se crea un par de claves ECDSA P-256 en el navegador usando
crypto.subtle.generateKey(). Esta clave identifica tu cuenta ACME. -
Registro de cuenta — La clave pública se registra en la API ACME de Let’s Encrypt. Cada solicitud se firma con JWS (JSON Web Signature).
-
Creación del pedido — Especificas qué nombres de host debe cubrir el certificado. Let’s Encrypt devuelve un conjunto de desafíos.
-
Completar los desafíos — Para cada nombre de host, completas un desafío HTTP-01 (colocar un archivo en tu servidor) o un desafío DNS-01 (añadir un registro TXT).
-
Pre-verificación — Antes de enviar a Let’s Encrypt, GetHTTPS verifica tu configuración de desafío desde la internet pública. Esto detecta errores tipográficos antes de gastar un intento de límite de tasa.
-
Emisión del certificado — Una vez que los desafíos se aprueban, se genera un par de claves de certificado separado, se construye un CSR (Solicitud de Firma de Certificado) y se finaliza el pedido. Let’s Encrypt devuelve la cadena de certificados firmada.
-
Descarga — Descargas
privkey.pem,cert.pem,chain.pemyfullchain.pemy los despliegas en tu servidor.
Modelo de seguridad
GetHTTPS está diseñado de manera que ni siquiera nosotros podemos acceder a tus claves privadas.
Las claves privadas nunca salen del navegador
Cada clave, tanto la clave de cuenta como la clave del certificado, se genera usando la Web Crypto API del navegador (crypto.subtle.generateKey()). El material criptográfico existe solo en la memoria de JavaScript dentro de tu pestaña. Nunca se serializa a disco, nunca se envía por la red y nunca es accesible para gethttps.com.
Cuando haces clic en «Descargar», el archivo PEM se crea del lado del cliente con URL.createObjectURL() y se te entrega como descarga. El archivo va de la memoria a tu sistema de archivos, nunca toca nuestros servidores.
Sin backend, sin proxy
Las herramientas de certificados tradicionales ejecutan un proceso del lado del servidor. Esto significa que tu clave privada existe en un servidor que quizás no controlas.
GetHTTPS no tiene backend. El sitio es HTML, CSS y JavaScript estático. Tu navegador hace las solicitudes ACME directamente a acme-v02.api.letsencrypt.org. No hacemos proxy, no inspeccionamos ni registramos estas solicitudes.
Lo que vemos y lo que no vemos
| Vemos | No vemos | |
|---|---|---|
| Tus claves privadas | ✗ | ✓ (solo en el navegador) |
| Tus dominios | ✗ | ✓ (se envían a Let’s Encrypt directamente) |
| Solicitudes ACME | ✗ | ✓ (navegador → Let’s Encrypt) |
| Tokens de desafío | ✗ | ✓ (generados en el navegador) |
| Tu correo electrónico | ✗ | ✓ (se envía solo a Let’s Encrypt) |
Pre-verificaciones DNS
Para la verificación de desafíos, GetHTTPS consulta resolvers DNS públicos (a través de la API DNS-over-HTTPS de Google). Estas consultas contienen solo el nombre de dominio y el registro TXT esperado, ningún dato privado.
Modelo de amenazas
De qué protegemos:
- Robo de claves por compromiso del servidor (no hay servidor que comprometer)
- Intermediario (man-in-the-middle) en el material criptográfico (las claves nunca salen de la pestaña)
- Recolección de datos (sin analíticas por defecto, sin registro en backend)
De qué no protegemos:
- Un navegador comprometido (si tu navegador está comprometido, todas las garantías se pierden)
- Un proveedor DNS comprometido (si un atacante controla tu DNS, puede emitir certificados vía DNS-01)
- Extensiones del navegador que pueden leer la memoria de la página
¿Qué pasa con las renovaciones?
Los certificados de Let’s Encrypt son válidos por 90 días. Para renovar, regresa y realiza el mismo proceso. Tu clave de cuenta (si la guardaste) será reconocida, así que no necesitas registrarte de nuevo.
Para renovaciones automáticas, considera un cliente del lado del servidor como Certbot. GetHTTPS está diseñado para la emisión manual por única vez, donde deseas control total y transparencia.