GetHTTPS 是一个基于浏览器的 ACME 客户端,无需任何服务器端组件即可从 Let’s Encrypt 签发免费的 HTTPS 证书。
架构
传统 ACME 工具(如 certbot 和 acme.sh)运行在你的服务器上,需要 Shell 访问权限、root 权限,通常还需要设置 cron 定时任务来续期证书。
GetHTTPS 采用了截然不同的方式:所有操作都在浏览器标签页中完成。你的私钥通过 Web Crypto API 在本地生成,永远不会离开当前页面。
工作流程
-
生成账号密钥 — 浏览器使用
crypto.subtle.generateKey()创建一个 P-256 ECDSA 密钥对,作为你的 ACME 账号标识。 -
注册账号 — 将公钥注册到 Let’s Encrypt 的 ACME API。每个请求都通过 JWS(JSON Web Signature)签名。
-
创建订单 — 指定证书需要覆盖的域名。Let’s Encrypt 返回一组 challenge 验证任务。
-
完成 Challenge — 对于每个域名,你需要完成 HTTP-01 challenge(在服务器上放置文件)或 DNS-01 challenge(添加 TXT 记录)。
-
预检查验证 — 在提交给 Let’s Encrypt 之前,GetHTTPS 会从公网检查你的 challenge 配置是否正确,避免因配置错误浪费速率限制次数。
-
签发证书 — Challenge 验证通过后,生成独立的证书密钥对,构造 CSR(证书签名请求)并完成订单最终化。Let’s Encrypt 返回签名的证书链。
-
下载部署 — 下载
privkey.pem、cert.pem、chain.pem和fullchain.pem,部署到你的服务器。
安全模型
- 私钥绝不离开浏览器 — 通过 WebCrypto 生成,仅存在于内存中
- 无代理 — 浏览器直接与 Let’s Encrypt 的 ACME API 通信
- 无后端 — gethttps.com 仅提供静态文件
- 开源 — 全部客户端代码可审计
关于续期
Let’s Encrypt 证书有效期为 90 天。续期时只需重新执行相同流程。如果保存了账号密钥,Let’s Encrypt 会识别你的账号,无需重新注册。
如果需要自动续期,建议使用服务器端客户端(如 certbot)。GetHTTPS 专为手动、一次性签发设计,适合需要完全控制和透明度的场景。