bg-tutorials

如何在 pfSense 上安装 ACME SSL 证书

在本指南中,你将学习如何在 pfSense 上安装 ACME SSL 证书。防火墙现在通过其内置软件包原生支持 ACME 协议,让你可以自动签发和更新 SSL 证书。

pfsense ACME SSL

该流程与支持ACME + 外部账户绑定(EAB)的商业证书颁发机构(CA)配合使用。


开始之前

您需要

  • 可接入互联网的 pfSense 2.7 或 Plus 23.x 防火墙。
  • SSH 或 WebGUI 管理访问。
  • CA 的ACME 目录 URLEAB 密钥 IDHMAC 密钥
  • 解析到您的 pfSense 广域网 IP 的公共域(如vpn.example.com )。

步骤 1:安装 ACME 软件包

  1. 转到系统 > 软件包管理器 > 可用软件包
  2. 搜索acme
  3. 单击安装,然后确认。
  4. 安装后,您会在服务 > ACME 证书找到一个新菜单。

步骤 2:创建 ACME 账户密钥

  1. 在 pfSense 菜单中,转到服务 > ACME 证书 > 帐户密钥
  2. 单击+ 添加创建新账户。
  3. 请准确填写以下字段:
    • 名称 – 给账户一个简单的标识符(例如 Sectigo-EAB)。
    • ACME 服务器 URL– 粘贴 CA 的目录端点,例如https://acme.sectigo.com/v2/DV
    • 电子邮件地址– 输入 CA 使用的管理联系人。
    • EAB 密钥 ID 和 EAB HMAC 密钥– 插入 CA 提供的这两个值。(只有当 CA 要求外部账户绑定时,这些字段才会出现在图形用户界面中)。
  4. 单击 “创建新账户密钥”,然后单击 “注册 ACME 账户密钥”。

如果 EAB 字段在您的 pfSense 版本中不可见,您仍可正常注册,然后使用外部 ACME 客户端(如 acme.sh)手动签发和导入证书。从功能上讲,这两种方法都能与支持 ACME + EAB 的商业 CA 配合使用。


步骤 3:添加新的证书条目

  1. 转到服务 > ACME 证书 > 证书
  2. 单击+ Add并为条目命名(如 vpn-example)。
  3. 账户密钥下,选择之前创建的账户。
  4. 在域名 SAN 列表中,添加您的域名(如vpn.example.com)。
  5. 挑战类型请选择HTTP-01(推荐)。
  6. 在 “方法“中,根据设置选择 webroot 本地文件夹或独立运行。
  7. 单击保存 应用

步骤 4:设置 HTTP 验证

CA 必须通过80 端口连接到您的 pfSense 设备,以确认域名所有权。

如果您已将 80 端口用于其他服务,请将其临时重定向或转发到 pfSense 的内部 webroot。

确保任何 HTTPS 重定向都允许路径
http://vpn.example.com/.well-known/acme-challenge/ 保持纯 HTTP。

对于 NAT 或反向代理后的边缘情况,可使用端口转发或虚拟服务器规则来确保外部访问该验证路径。


步骤 5:颁发证书

返回服务 > ACME 证书,单击证书的签发/更新按钮。

您将看到显示每个步骤的实时日志:

  • 账户验证
  • 域名验证
  • 证书发放

完成后,新证书将出现在系统 → 证书下。


步骤 6:申请证书

将新的 SSL 证书用于 pfSense 上的任何服务:

  • WebGUI:系统> 高级> 管理访问> SSL 证书
  • OpenVPN / IPsec / HAProxy:从各自的下拉菜单中选择相同的证书
  • 单击保存应用更改

ACME 软件包会自动处理证书续期。默认情况下,pfSense 会在证书到期前 30 天进行更新。

要检查或手动触发,请访问服务 > ACME 证书 > Issue/Renew


备用方法:从外部生成证书并将其导入 pfSense

如果您的商业 CA 的 ACME 流程无法直接在 pfSense 中注册,您仍然可以在另一台 Linux 或 BSD 服务器上签发证书,然后手动导入。这种方法适用于任何支持ACME + 外部账户绑定(EAB)的 CA,是复杂或不支持环境下最可靠的备用方法。

步骤 1:设置 ACME.sh

在任何能上网的 Linux 或 BSD 机器上,安装 ACME 客户端:


curl https://get.acme.sh | sh
source ~/.bashrc

这将在你的主目录中安装acme.sh ,并为与商用 ACME 终端一起使用做好准备。

步骤 2:在 CA 注册 ACME 帐户

使用 CA ACME 门户的凭证、目录 URL、密钥 ID 和 HMAC 密钥。

acme.sh --register-account \
  --server https://acme.yourca.com/v2/acme \
  --eab-kid YOUR_EAB_KID \
  --eab-hmac-key YOUR_EAB_HMAC_KEY \
  --accountemail [email protected]

此步骤通过 CA 的 ACME 服务验证您的系统。每个账户只需执行一次。

步骤 3:申请证书

为您的 pfSense 域签发证书(例如vpn.example.com )。

acme.sh --issue \
  -d vpn.example.com \
  --server https://acme.yourca.com/v2/acme \
  --eab-kid YOUR_EAB_KID \
  --eab-hmac-key YOUR_EAB_HMAC_KEY \
  --standalone

如果您的 CA 或网络设置需要 DNS 验证,请将最后一行替换为--dns dns_cf (使用与您的提供商匹配的 DNS 插件)。

完成后,证书将保存在以下文件夹中: ~/.acme.sh/vpn.example.com/

步骤 4:查找文件

在该文件夹中,您将看到

  • fullchain.cer– 证书和中间链
  • vpn.example.com.key– 私有密钥
  • ca.cer– CA 根证书/中间证书

这些是您要上传到 pfSense 的文件。

第 5 步:将证书导入 pfSense

登录 pfSense 并转到系统> 证书

  1. 单击添加/导入
  2. 粘贴证书 (fullchain.cer) 和私人密钥 (vpn.example.com.key) 的内容。
  3. 可选择添加 CA 链 (ca.cer)。
  4. 单击保存

现在,pfSense 将识别并存储此有效商业证书。

第 6 步:应用和自动化

现在您可以使用导入的证书:

  • 系统> 高级> 管理访问(WebGUI)
  • OpenVPN 或 IPsec 服务器
  • HAProxy 或 Nginx软件包

对于续订,可通过在外部主机上调度 cron 作业来自动续订acme.sh ,然后使用 SCP 或 pfSense API 将文件重新上传到 pfSense。


常见问题

如果您是第一次使用商用 CA 设置 ACME,请查看最常见问题的答案:

可以与任何 CA 一起使用吗?

您可以将其与提供ACME 目录 URLEAB 凭据的 CA(如Sectigo 或 DigiCert)一起使用。

验证需要哪个端口?

80 端口(HTTP)。在验证完成之前,不要将其重定向到 HTTPS。

为什么我的验证之前正常,而现在却突然失效了?

如果 ACME 设置一直正常工作,但突然出现故障,通常是由于网络或 DNS 发生变化造成的。检查你的广域网 IP 或 NAT 规则是否发生了变化,或者新的防火墙策略是否阻止了 HTTP(80 端口)入站。还要确保你的域名仍然解析到相同的公共 IP。ACME 验证取决于外部可达性。即使是一个重定向或端口被封也会导致验证失败。

我可以跨设备共享 EAB 凭据吗?

这取决于您的 CA,有些 CA 要求每个域或设备有唯一的凭据。


最后的话

通过这种设置,你可以在pfSense上安装支持EAB的商业CA颁发的ACME SSL证书,并在证书的生命周期内保持完全自动化。这是一种稳定的企业级方法,可让你的 VPN、WebGUI 和反向代理持续得到信任,而无需手动更新、断链或停机中断关键服务。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.