←返回 Certra 技术说明

证书从哪里来,如何交付。

这一页把 Certra 的技术边界说清楚:Caddy 和 ACME 做了什么,Waffo Pancake 做了什么,哪些事必须由你完成,以及为什么“年度服务”不是“单张证书有效一年”。

服务是什么

Certra 是一个托管型 TLS 证书服务。它不冒充证书颁发机构,使用 Let’s Encrypt、ZeroSSL 等公开可信 CA 的 ACME 接口签发 DV 证书。Caddy 负责 ACME 交互、证书存储和自动轮换;Certra 负责订单、支付、状态、访问控制与 PEM 交付。

关键事实

公开 DV 证书通常可以免费获取。你为 Certra 支付的是验证、签发、轮换、交付、状态与支持服务,而不是“证书垄断费”。

证书寿命与年度服务

公开 TLS 证书的有效期受 CA/Browser Forum Baseline Requirements 约束,正在分阶段缩短:2026-03-15 起最长 200 天,2027-03-15 起最长 100 天,2029-03-15 起最长 47 天。不同 CA 的实际签发长度可能更短。

因此,$19.90/域名/年(或月付 $2.49 × 12 期,合计 $29.88)的正确含义是:在一年服务期内,Certra 持续维护签发配置、轮换证书并允许重新下载最新 PEM。它不是“给你一张 365 天不过期的证书”。如果你把 PEM 安装到自己的服务器,每次轮换后仍需要重新部署。

签发流程

  1. 客户提交域名与邮箱,Waffo Pancake 创建托管结账会话。
  2. 支付成功 webhook 经过 RSA-SHA256 验签,订单进入 paid / queued 状态。
  3. 边缘执行器领取订单,生成 Caddy 配置,Caddy 向 ACME CA 发起域名验证。
  4. 验证通过后证书落入 Caddy storage。执行器读取完整链、私钥、序列号、指纹与到期时间。
  5. Worker 只向持有订单访问令牌的客户代理 PEM 下载,不把私钥写入 D1。
Browser → Cloudflare Worker / D1 → Caddy fulfillment agent → ACME CA │ └─ Caddy storage (cert + key)

DNS 验证

当前默认使用 ACME HTTP-01。签发期间,域名的 A 记录必须指向 Certra 的边缘节点,CA 能从公网访问 80 端口并读取挑战文件。Cloudflare 橙云会改变流量路径,因此签发时应使用 DNS only(灰云)。

会影响现有网站吗?

会。把域名的 A 记录指向边缘节点后,在切换回你的源站之前,访问者会到达 Certra 的验证节点。对于生产站点,应安排维护窗口,或改用 DNS-01 / Caddy 反向代理架构。

安装 PEM

订单页提供 fullchain.pem 与 private-key.pem。私钥只应保存在目标服务器的受限制路径中。不要把它们发到聊天、邮件或代码仓库。

Nginx

ssl_certificate /etc/ssl/certra/fullchain.pem; ssl_certificate_key /etc/ssl/certra/private-key.pem; ssl_protocols TLSv1.2 TLSv1.3;

Apache

SSLCertificateFile /etc/ssl/certra/fullchain.pem SSLCertificateKeyFile /etc/ssl/certra/private-key.pem

Caddy

tls /etc/ssl/certra/fullchain.pem /etc/ssl/certra/private-key.pem

安装后请检查证书链、私钥权限和域名匹配。私钥权限建议为 0600,属主为运行 Web 服务的用户。

轮换与重新交付

Caddy 会在证书到期前自动轮换。Certra 的边缘执行器会重新读取同一域名的证书文件并更新订单记录,客户可在原订单页重新下载最新 PEM。导出的 PEM 不会自动安装到你的服务器,重新部署仍由你或你的自动化完成。

续期验证的前置条件

如果签发后你把 A 记录切回自己的源站,HTTP-01 轮换将再次需要把流量指向 Certra 边缘。需要长期无感轮换时,应改为 DNS-01(例如 Cloudflare API token、acme-dns)或让 Caddy 长期反向代理该域名。当前参考实现只包含 HTTP-01。

安全边界

  • 订单访问令牌只保存哈希;私钥不进入 D1。
  • Caddy Admin API 只在内网;履约 agent 的内部接口使用 Bearer secret。
  • PEM 下载禁用缓存,并校验订单需处于 issued 状态。
  • Waffo webhook 必须使用原始请求体验签,不能使用重新序列化的 JSON。

限制与未包含项

  • 默认不支持 wildcard;wildcard 必须 DNS-01。
  • 没有自动把 PEM 安装到客户源站;这是客户侧部署步骤。
  • 默认使用 USD;实际可用卡组织和其他支付方式以 Waffo 后台审核结果为准。
  • 没有内置邮件通知系统;请通过订单页或客服流程通知轮换。