blog.dopana

Back

Let’s Encrypt已成为免费SSL证书的标准,但有时您需要替代方案。可能是因为您想减少管理开销,需要更长的证书有效期,或者正在寻找与现有基础设施更好的集成。

为什么考虑Let’s Encrypt替代方案?#

Let’s Encrypt很棒,但有一些限制:

  • 有效期短:只有90天,需要频繁更新
  • 没有Web界面:必须使用命令行
  • 速率限制:证书数量有限制
  • 不支持OV/EV:只有域名验证(DV)

[!TIP] 如果您在使用Let’s Encrypt时遇到问题,或者想探索其他选择,这里是今天可用的最佳替代方案。

1. Cloudflare SSL(最佳代理/CDN解决方案)#

如果您将DNS指向Cloudflare,他们将提供免费SSL证书,无需在服务器上手动更新。

Universal SSL#

  • 自动为通过Cloudflare代理的每个域名激活
  • 不需要在主机上安装任何东西
  • 浏览器立即接受的公开信任证书

Origin CA证书#

  • Cloudflare颁发直接安装在服务器上的证书
  • 有效期长达15年
  • 加密从服务器到Cloudflare的数据
  • 不用担心像Let’s Encrypt那样每3个月过期
graph LR
    A[浏览器] --> B[Cloudflare边缘]
    B --> C[源服务器]
    B -.->|Universal SSL| A
    C -.->|Origin CA| B
    style B fill:#f9f,stroke:#333,stroke-width:2px

[!WARNING] Origin CA只被Cloudflare信任,不是公开信任的。如果绕过Cloudflare直接访问服务器,浏览器会显示错误。

何时应该使用Cloudflare SSL?#

  • 网站通过Cloudflare代理运行
  • 想尽量减少SSL管理工作
  • 需要额外的CDN、DDoS保护好处
  • 不想在服务器上配置certbot

2. ZeroSSL(直接ACME竞争对手)#

ZeroSSL是Let’s Encrypt的最大竞争对手,也使用ACME协议进行自动化。

优点#

  • 免费:90天,通过Web界面最多3个证书
  • 无限制:如果配置了ACME自动化
  • 直观的Web界面:比命令行更容易使用
  • 完整的ACME端口支持:HTTP-01、DNS-01、TLS-ALPN-01

限制#

  • 通配符SSL只在付费计划中
  • 免费层有更严格的速率限制
# 使用Certbot配置ZeroSSL
certbot certonly --authenticator dns-zero_ssl \
  --dns-zero_ssl-credentials ~/.secrets/zero_ssl.ini \
  -d example.com -d *.example.com
bash

何时应该使用ZeroSSL?#

  • 想要用户友好的Web管理界面
  • 需要通配符SSL(付费计划)
  • 已经熟悉ACME但想要更好的UI

3. SSL For Free(现在是ZeroSSL的一部分)#

以前是通过Web手动创建Let’s Encrypt证书的工具。现在已集成到ZeroSSL中。

  • 仍可用于创建免费90天SSL证书
  • 不需要命令行
  • 后端系统是ZeroSSL

何时应该使用SSL For Free?#

  • 需要快速SSL而不需要ACME配置
  • 只需要1-2个简单证书
  • 想要简单的手动过程

4. Buypass Go SSL(欧洲ACME替代方案)#

来自挪威的信誉良好的证书颁发机构(CA)。

主要优点#

  • 180天有效期:Let’s Encrypt/ZeroSSL的两倍
  • ACME兼容:容易从Let’s Encrypt迁移
  • 公开信任:所有浏览器都接受
  • 免费通配符:通过ACME v2

限制#

  • 只支持单域名(没有多域名SAN)
  • 需要Buypass账户
  • 没有Web界面
# 从Let's Encrypt迁移到Buypass
- 只需更改服务器URL
# From: https://acme-v02.api.letsencrypt.org/directory
# To: https://api.buypass.com/acme/directory
bash

何时应该使用Buypass?#

  • 想要更长的证书有效期(180天)
  • 需要免费通配符
  • 位于欧洲,想要本地CA
  • 已经有ACME基础设施

5. 云提供商的SSL#

如果您在云平台上运行基础设施,它们有集成的免费SSL。

AWS Certificate Manager (ACM)#

  • Load Balancer(ALB)和CloudFront免费
  • 自动永久更新
  • Elastic Load Balancing的公开证书
  • 内部应用程序的私有证书

Google Managed SSL#

  • App Engine、GKE、Cloud Run免费
  • 自动生命周期管理
  • 与Google Cloud Load Balancing集成

Azure Key Vault#

  • 托管SSL证书
  • 与Application Gateway集成
  • 自动更新
graph TD
    A[云提供商] --> B[AWS ACM]
    A --> C[Google Managed SSL]
    A --> D[Azure Key Vault]
    B --> E[ALB/CloudFront]
    C --> F[App Engine/GKE]
    D --> G[Application Gateway]
    style A fill:#e1f5fe,stroke:#01579b,stroke-width:2px

何时应该使用云提供商SSL?#

  • 基础设施在相应的云平台上
  • 想要与云服务深度集成
  • 需要无需维护的托管服务
  • 大规模,许多应用程序

详细比较表#

标准Let’s EncryptCloudflare SSLZeroSSLBuypass
有效期90天永久 / 15年(Origin)90天180天
运行方式直接服务器安装代理CDN服务器或Web UI直接服务器安装
Web界面没有(仅CLI)非常直观有仪表板没有(仅CLI)
通配符SSL有(DNS-01)有(免费)仅付费计划有(ACME v2)
多域名有(SAN)有(付费)没有
ACME支持没有(Origin CA)
公开信任有(Universal)
速率限制50/周无限制3免费不清楚

从Let’s Encrypt迁移指南#

迁移到Cloudflare SSL#

  1. 将DNS指向Cloudflare
# 更新名称服务器
nslookup -type=NS example.com
bash
  1. 启用Universal SSL
  • 转到Cloudflare Dashboard > SSL/TLS
  • 选择”Full”或”Full (strict)“模式
  • Universal SSL自动激活
  1. 安装Origin CA(如果需要)
# 从Cloudflare下载Origin CA证书
# 安装在服务器上
sudo cp origin.pem /etc/ssl/certs/
sudo cp origin.key /etc/ssl/private/
# 配置Nginx/Apache使用此证书
bash

迁移到ZeroSSL#

  1. 创建ZeroSSL账户
  • 在zerossl.com注册
  • 获取API密钥
  1. 配置Certbot
# 安装ZeroSSL插件
sudo apt install python3-certbot-dns-zero-ssl

# 创建凭据文件
echo "dns_zero_ssl_api_token = YOUR_API_TOKEN" > ~/.secrets/zero_ssl.ini
chmod 600 ~/.secrets/zero_ssl.ini

# 请求证书
certbot certonly --authenticator dns-zero_ssl \
  --dns-zero_ssl-credentials ~/.secrets/zero_ssl.ini \
  -d example.com -d *.example.com
bash

迁移到Buypass#

  1. 创建Buypass账户
  • 在buypass.com注册
  • 获取EAB凭据
  1. 配置ACME客户端
# 使用Certbot
certbot register --account-key ~/.secrets/buypass.key \
  --email your@email.com \
  --server https://api.buypass.com/acme/directory

# 请求证书
certbot certonly --server https://api.buypass.com/acme/directory \
  -d example.com
bash

常见问题#

我应该选择哪个解决方案?#

选择Cloudflare SSL如果:

  • 网站通过Cloudflare运行
  • 想要”设置后忘记”的解决方案
  • 需要额外的CDN/DDoS保护

选择ZeroSSL如果:

  • 想要用户友好的Web界面
  • 需要通配符SSL(付费计划)
  • 已经熟悉ACME

选择Buypass如果:

  • 想要180天的有效期
  • 需要免费通配符
  • 位于欧洲

选择云提供商SSL如果:

  • 基础设施在AWS/GCP/Azure上
  • 想要托管服务
  • 大规模

Origin CA安全吗?#

Origin CA在以下情况下是安全的:

  • 所有流量通过Cloudflare代理
  • 使用”Full (strict)” SSL模式
  • 从不直接访问源服务器

在以下情况下不安全:

  • 存在到源的直接流量
  • Cloudflare经历停机时间
  • 需要公开信任的证书

可以组合多个解决方案吗?#

可以!例如:

  • 用于公共流量的Cloudflare Universal SSL
  • 用于Cloudflare → 源的Origin CA
  • 用于直接访问路由的Let’s Encrypt

结论#

Let’s Encrypt仍然是许多用例的绝佳选择,但它不是唯一的解决方案。根据您的具体需求:

  • 最省力:Cloudflare SSL
  • 独立,无代理:ZeroSSL或Buypass
  • 云原生:AWS ACM、Google Managed SSL
  • 快速、手动:SSL For Free

关键要点:选择适合您架构和工作流程的解决方案,不一定是”流行选择”。

参考文献#