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

该流程与支持ACME + 外部账户绑定(EAB)的商业证书颁发机构(CA)配合使用。
开始之前
您需要
- 可接入互联网的 pfSense 2.7 或 Plus 23.x 防火墙。
- SSH 或 WebGUI 管理访问。
- CA 的ACME 目录 URL、EAB 密钥 ID 和HMAC 密钥。
- 解析到您的 pfSense 广域网 IP 的公共域(如
vpn.example.com)。
步骤 1:安装 ACME 软件包
- 转到系统 > 软件包管理器 > 可用软件包。
- 搜索acme。
- 单击安装,然后确认。
- 安装后,您会在服务 > ACME 证书找到一个新菜单。
步骤 2:创建 ACME 账户密钥
- 在 pfSense 菜单中,转到服务 > ACME 证书 > 帐户密钥。
- 单击+ 添加创建新账户。
- 请准确填写以下字段:
- 名称 – 给账户一个简单的标识符(例如 Sectigo-EAB)。
- ACME 服务器 URL– 粘贴 CA 的目录端点,例如https://acme.sectigo.com/v2/DV
- 电子邮件地址– 输入 CA 使用的管理联系人。
- EAB 密钥 ID 和 EAB HMAC 密钥– 插入 CA 提供的这两个值。(只有当 CA 要求外部账户绑定时,这些字段才会出现在图形用户界面中)。
- 单击 “创建新账户密钥”,然后单击 “注册 ACME 账户密钥”。
如果 EAB 字段在您的 pfSense 版本中不可见,您仍可正常注册,然后使用外部 ACME 客户端(如 acme.sh)手动签发和导入证书。从功能上讲,这两种方法都能与支持 ACME + EAB 的商业 CA 配合使用。
步骤 3:添加新的证书条目
- 转到服务 > ACME 证书 > 证书。
- 单击+ Add并为条目命名(如 vpn-example)。
- 在账户密钥下,选择之前创建的账户。
- 在域名 SAN 列表中,添加您的域名(如vpn.example.com)。
- 挑战类型请选择HTTP-01(推荐)。
- 在 “方法“中,根据设置选择 webroot 本地文件夹或独立运行。
- 单击保存 并应用。
步骤 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 并转到系统> 证书。
- 单击添加/导入。
- 粘贴证书 (
fullchain.cer) 和私人密钥 (vpn.example.com.key) 的内容。 - 可选择添加 CA 链 (
ca.cer)。 - 单击保存。
现在,pfSense 将识别并存储此有效商业证书。
第 6 步:应用和自动化
现在您可以使用导入的证书:
- 系统> 高级> 管理访问(WebGUI)
- OpenVPN 或 IPsec 服务器
- HAProxy 或 Nginx软件包
对于续订,可通过在外部主机上调度 cron 作业来自动续订acme.sh ,然后使用 SCP 或 pfSense API 将文件重新上传到 pfSense。
常见问题
如果您是第一次使用商用 CA 设置 ACME,请查看最常见问题的答案:
可以与任何 CA 一起使用吗?
您可以将其与提供ACME 目录 URL和EAB 凭据的 CA(如Sectigo 或 DigiCert)一起使用。
验证需要哪个端口?
仅80 端口(HTTP)。在验证完成之前,不要将其重定向到 HTTPS。
为什么我的验证之前正常,而现在却突然失效了?
如果 ACME 设置一直正常工作,但突然出现故障,通常是由于网络或 DNS 发生变化造成的。检查你的广域网 IP 或 NAT 规则是否发生了变化,或者新的防火墙策略是否阻止了 HTTP(80 端口)入站。还要确保你的域名仍然解析到相同的公共 IP。ACME 验证取决于外部可达性。即使是一个重定向或端口被封也会导致验证失败。
我可以跨设备共享 EAB 凭据吗?
这取决于您的 CA,有些 CA 要求每个域或设备有唯一的凭据。
最后的话
通过这种设置,你可以在pfSense上安装支持EAB的商业CA颁发的ACME SSL证书,并在证书的生命周期内保持完全自动化。这是一种稳定的企业级方法,可让你的 VPN、WebGUI 和反向代理持续得到信任,而无需手动更新、断链或停机中断关键服务。

