简介
通过配置 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证书,然后单击保存。

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

添加评论