使用ACME方式在ServBay中为网站申请SSL证书
ServBay 支持使用 ACME 协议自动为您的本地开发网站申请 SSL/TLS 证书。ACME (Automated Certificate Management Environment) 协议是一种自动化证书生命周期管理(包括申请、续期和吊销)的标准协议。通过 ServBay 提供的 ACME 管理面板,您可以方便快捷地为本地网站配置受信任的 SSL 证书,这对于模拟生产环境、测试 HTTPS 相关功能至关重要。
ServBay 默认优先使用 ZeroSSL 签发证书,但您也可以灵活选择使用 Let's Encrypt 或 Google Trust Services 等其他 ACME 兼容的证书颁发机构 (CA)。
TIP
为确保本地开发环境与生产环境尽可能一致,使用受信任的 SSL 证书非常重要。ServBay 的 ACME 功能让这一过程变得异常简单。
核心概念解释
在开始之前,了解一些核心概念有助于更好地使用 ServBay 的 ACME 功能:
- ACME 协议: 一种开放标准协议,用于自动化证书颁发机构 (CA) 与服务器之间的交互,实现证书的自动申请、续期和管理。
- DNS-01 验证 (DNS API 方式): ACME 协议支持多种域名所有权验证方式。ServBay 主要采用 DNS-01 方式,这意味着 CA 会要求您在域名的 DNS 记录中添加一个特定的 TXT 记录。通过验证该记录是否存在且内容正确,CA 即可确认您对域名拥有控制权。这种方式的优点在于:
- 无需您的本地开发环境能够通过公网访问。
- 即使本地端口 80/443 被防火墙或 ISP 阻止,也能完成验证。
- 外部账户绑定 (EAB - External Account Binding): 对于某些 CA(如 Google Trust Services 或 ZeroSSL),在首次使用 ACME 协议申请证书时,需要通过 EAB 将您的 ACME 客户端(这里是 ServBay 集成的 acme.sh)与您在该 CA 注册的账户进行绑定。这通常涉及一对 Key ID 和 HMAC Key。
- ECC vs RSA 证书:
- RSA: 传统的加密算法,兼容性极佳,但密钥长度较长(如 2048 位或 4096 位)以保证安全性,计算开销相对较大。
- ECC (Elliptic Curve Cryptography): 一种更现代的加密算法,在提供相同安全等级的情况下,所需的密钥长度短得多(如 256 位或 384 位)。ECC 证书具有更高的性能、更短的握手时间、更低的带宽消耗和更好的前向保密性。ServBay 默认推荐使用 ECC 证书。
前提条件
ServBay 通过 DNS API 方式进行 ACME 证书申请,这种方式无需您的本地网站能够被互联网访问。在使用 ACME 方式申请 SSL 证书之前,请确保满足以下条件:
- 拥有域名: 您需要拥有一个已经注册并可以控制 DNS 记录的域名。
- 获取域名 DNS 提供商的 API Key: ACME 申请过程中,需要通过 DNS API 自动添加和删除用于验证的 TXT 记录。因此,您需要获取您的 DNS 服务提供商(托管您域名解析的平台,不一定是域名注册商)的 API Key 或相关凭证。要查看 ServBay 所支持的 DNS 服务提供商以及如何获取其 API KEY,请访问
acme.sh
官方 Wiki 的 DNS API 部分(英文):How to use DNS API。请根据您使用的 DNS 提供商查找相应的教程。 - 获得 EAB 信息(如果使用 Google Trust Services 或 ZeroSSL 首次申请): 如果您选择使用 Google Trust Services 作为证书签发方,您需要从 Google Cloud 获取 EAB 信息。请参考 Google Cloud 官方文档(英文):Obtaining EAB credentials from Google Cloud。对于 ZeroSSL,通常首次申请时也可能需要邮箱验证或 API Key。
在ServBay中使用ACME方式申请SSL证书
按照以下步骤在 ServBay 中通过 ACME 方式为您本地的开发网站申请 SSL 证书:
打开 ServBay 管理面板 启动 ServBay 应用,并通过系统菜单栏图标或 Dock 图标进入 ServBay 的管理面板。
导航至 SSL 证书管理 在 ServBay 管理面板的左侧导航栏中,找到并点击
SSL 证书
选项。开始申请新证书 在 SSL 证书管理界面的右上角,点击
+
符号按钮,选择申请新证书
。配置证书基本信息
- 证书名字: 为您的证书输入一个标识性名称,方便识别(例如:
servbay-demo-ssl
)。 - 用途: 选择
TLS/SSL
。 - 请求方式: 选择
ACME
。
- 证书名字: 为您的证书输入一个标识性名称,方便识别(例如:
选择证书签发方 (CA) 在
签发方
下拉菜单中,选择您希望使用的证书颁发机构。默认是ZeroSSL
。您可以根据需要选择Let's Encrypt
或Google Trust Services
。此处我们以ZeroSSL
为例进行演示。选择 DNS API 提供商 在
DNS API 提供商
下拉菜单中,选择您域名所使用的 DNS 服务提供商。此处以Cloudflare
为例。请注意,这里选择的是实际托管您域名解析的平台,而不是您购买域名的注册商(如果两者不同)。选择证书签发算法和密钥长度
- 算法: 默认并建议选择
ECC
算法,因为它提供了更好的性能和安全性。如果需要考虑旧设备的兼容性,也可以选择RSA
。 - 密钥长度: 如果选择 ECC,默认密钥长度通常是
384
位,这通常足够安全。如果选择 RSA,常见的密钥长度是2048
或4096
位。
- 算法: 默认并建议选择
设置验证信息 根据您选择的
签发方
和DNS API 提供商
,下方会出现相应的输入框,用于填写必要的验证信息。- 对于 ZeroSSL,您可能需要输入您的邮箱地址。
- 对于 Cloudflare DNS API,您需要输入您的 API Key 或其他认证信息。请根据
acme.sh
Wiki 中对应提供商的要求填写。
WARNING
注意:请只粘贴 API Key 或秘密密钥的值,不要在输入框中包含
export
等 shell 命令前缀。设置域名 在
域名
字段中,输入您要申请证书的域名(例如:servbay.demo
或*.servbay.demo
)。如果您需要为泛域名申请证书(如*.servbay.demo
),请确保您的 DNS 提供商支持泛域名 TXT 记录的自动化添加。开始申请 确认所有信息填写无误后,点击
请求
按钮。ServBay 将调用集成的acme.sh
工具,根据您提供的 DNS API 信息自动进行域名验证并向 CA 申请证书。
申请过程可能需要一些时间,具体取决于 DNS 记录的传播速度和 CA 的响应。您可以在 ServBay 的日志或证书列表中查看申请进度。成功后,新申请的证书将出现在 SSL 证书
列表中。
在ServBay网站配置中使用证书
当成功申请到 ACME 证书后,您可以将其应用到 ServBay 中配置的网站上:
- 导航至 ServBay 管理面板左侧的
网站
选项。 - 选择您要配置 SSL 的网站,点击右侧的编辑按钮(铅笔图标)。
- 在网站配置详情页中,找到
SSL 证书
选项。 - 从下拉菜单中选择您刚刚申请成功的 ACME 证书名称。
- 确保
启用 SSL
开关已打开。 - 保存网站配置。您的网站现在应该可以通过 HTTPS 访问了。
ACME证书的续期
ACME 颁发的证书(如来自 Let's Encrypt 或 ZeroSSL 的证书)通常有效期为 90 天。为了确保您的网站能够持续使用有效的 HTTPS 连接,证书需要在过期前进行续期。
ServBay 会自动监控通过 ACME 方式申请的证书的有效期。当证书即将到期时,ServBay 会尝试利用之前配置的 DNS API 信息自动向 CA 发起续期请求。
在正常情况下,只要您的 DNS API 凭证保持有效且域名解析服务稳定,您无需手动干预证书的续期过程。ServBay 会在后台为您处理。
常见问题 (FAQ) 与故障排除
- 申请失败,错误信息提示 DNS 验证失败?
- 请仔细检查您填写的 DNS API 凭证是否正确、是否具有修改 TXT 记录的权限。
- 检查您在 ServBay 中选择的
DNS API 提供商
是否与您实际使用的 DNS 服务商一致。 - DNS 记录添加后需要时间在全球传播,有时需要等待几分钟甚至更长时间。您可以尝试稍后重试申请。
- 确认您输入的域名拼写无误。
- 申请失败,错误信息与 EAB 相关?
- 如果您使用的是 Google Trust Services 或 ZeroSSL 且是首次申请,请确认您已正确获取并填写了 EAB 信息。
- 如果您之前成功申请过,但现在失败,可能是 EAB 信息过期或无效,需要重新获取。
- 申请失败,提示达到速率限制 (Rate Limit)?
- 证书颁发机构对每个域名或每个 IP 地址在一定时间内可以申请的证书数量有限制(速率限制)。如果您在短时间内重复申请或尝试申请大量证书,可能会触发限制。请等待一段时间(通常是几小时到几天)再尝试。
- 证书申请成功,但在浏览器中访问网站仍然显示不安全?
- 确保您在 ServBay 的网站配置中已经将新申请的证书应用到对应的网站,并且启用了 SSL。
- 尝试清空浏览器缓存或使用隐身模式访问。
- 检查您的本地 Hosts 文件或其他网络配置是否正确指向 ServBay。
- ServBay 会在什么时候尝试自动续期? ServBay 通常会在证书到期前的特定天数(例如 30 天)内开始尝试自动续期。只要 ServBay 应用在运行,并且网络连接正常,自动续期过程就会在后台静默进行。
总结
ServBay 提供了强大且易用的 ACME 功能,让开发者能够通过 DNS API 方式方便地为本地开发网站申请和管理受信任的 SSL/TLS 证书。这不仅简化了证书配置过程,更重要的是,它帮助开发者构建一个更接近生产环境、支持 HTTPS 的本地开发环境,从而更有效地进行开发和测试。
希望本文能帮助您顺利在 ServBay 中使用 ACME 方式配置 SSL 证书,提升您的本地开发体验。