使用 Let's Encrypt 为 OPNsense 防火墙配置 SSL 证书(DNS-01 质询)
通过配置 CloudFlare 动态域名,可以方便地远程访问 OPNsense 防火墙,但在没有设置 SSL 签名证书的前提下,每次登录都会提示连接不安全。本文将介绍使用 Let's Encrypt 免费为防火墙自动创建 SSL 证书,通过 DNS-01 质询方法自动验证并自动续订 SSL 证书。使用该方法不需要开放防火墙的 80、443 端口。
前提条件
- 有公网 IP。
- 已经在 CloudFlare 注册了顶级域名。
设置动态域名
访问 CloudFlare,为防火墙添加一条二级域名 A 记录。IPv4 地址可以随便输入,因为后面可以通过 OPNsense 防火墙的动态域名程序自动修改,代理选项暂时不选。本示例设置的动态域名为 opnwall.pfchina.site。

回到 OPNsense 防火墙,转到 系统 > 固件 > 插件 选项卡,安装 acme 和 ddclient 插件。

转到 服务 > 动态DNS,添加 CloudFlare 动态域名条目,输入用户名、密码、区域、主机名等信息。注意,密码输入 CloudFlare 账户的 Global API Key。

CloudFlare 上的 Global API Key 查看位置。

在 常规设置 选项卡上,选中 启用,然后点击下面的 应用 按钮。

回到 CloudFlare 的 DNS 设置,如果设置正确,添加的 A 记录会获取到防火墙 WAN 地址。
设置防火墙规则
由于运营商封闭了 80、443 端口,需要将防火墙默认访问端口修改为外网可访问的端口,本示例使用 5678 端口。
转到 防火墙 > 规则 > WAN 接口,开放 WAN 接口上 5678 端口。为了保证安全,该规则的源地址应限定安全范围。

调整系统设置
转到 系统 > 设置 > 管理,将默认访问端口修改为 5678,协议选 https。在 备用主机名 里输入动态域名,或选中 禁用 DNS 重绑定检查 选项,以避免触发防火墙的登录保护。

设置完成以后,输入 https://opnwall.pfchina.site:5678,可以远程访问防火墙,只不过因为没有配置 SSL 证书,还处于没挂锁的状态。

SSL 证书设置
导航到 服务 > Acme 客户端 > 帐户,添加一个帐号,输入相关信息,并点击保存。

导航到 服务 > Acme 客户端 > 挑战类型,添加 CloudFlare 域名挑战类型。挑战类型选 DNS-01,不需要开放 80、443 端口就可以申请证书。输入域名的其他相关信息,然后点击保存。

导航到 服务 > Acme 客户端 > 自动操作,添加一条自动化命令,在证书到期时自动重新续签。

单击 证书 菜单,点击右下角 添加 按钮添加证书。输入证书的通用名称、备用名称,选择 ACME 帐号、挑战类型,选中 自动操作 选项。然后点击底部的保存按钮。

然后单击 颁发/续订所有证书 按钮,这需要一些时间,大概两分钟左右。

申请成功后,转到 系统 > 证书 > 发行 菜单,会多出一个 CA。

在 证书 菜单,会多出一个 Acme 创建的证书。

在 吊销 菜单,会看到 Acme 吊销列表。

回到 服务 > ACME 客户端 > 设置 选项卡,选中 启用插件 和 自动续订 两个选项并点击应用。

转到 更新任务 选项卡,添加一个定时任务,用于启动证书更新。

添加完成以后,在 系统 > 设置 > 任务 菜单,可以看到新加的定时任务。

最后转到 系统 > 设置 > 管理,在 SSL 证书 选项下拉菜单中选择由 Acme 创建的 SSL 证书,然后单击保存。

刷新一下浏览器,挂锁成功!

觉得内容不错?我要