通过配置CloudFlare动态域名,可以方便的远程访问pfSense防火墙,但在没有设置SSL签名证书的前提下,每次登录都会提示连接不安全。本文将介绍使用Let's Encrypt免费为防火墙自动创建SSL证书,通过DNS-01质询方法自动验证并自动续订SSL证书。使用该方法不需要开放防火墙的80、443端口。

前提条件

  • 有公网IP。
  • 已经在CloudFlare注册了顶级域名。

设置动态域名

访问CloudFlare,在顶级域名上为防火墙添加一条A记录。IPv4地址可以随便输入,因为后面可以通过pfSsense防火墙的动态域名程序自动修改,代理选项暂时不选。本示例设置的动态域名为jx.pfchina.site。

pfSense使用CloudFlare动态域名,配置Let

回到pfSense防火墙,转到服务>动态域名,添加CloudFlare动态域名条目,输入 主机名,域名以及注册的用户名,密码不能使用帐号的密码,必须输入CloudFlare账户的Global API Key。

pfSense使用CloudFlare动态域名,配置Let

pfSense使用CloudFlare动态域名,配置Let

Global API Key。

单击保存并强制更新后,缓存IP变为绿色,即表示动态域名已获取正确的IP了。

pfSense使用CloudFlare动态域名,配置Let

回到CloudFlare的DNS设置栏,会发现添加的A记录也获取到了防火墙WAN地址。

设置防火墙规则

由于运营商封闭了80、443端口,需要将防火墙默认访问端口修改为外网可访问的端口,本示例使用5678端口。

转到防火墙>规则策略,在动态域名监听的WAN接口上,开放5678端口的访问。为了保证安全,该规则的源地址应该只限定安全的范围。

pfSense使用CloudFlare动态域名,配置Let

转到系统>高级设置,将默认访问端口修改为5678,协议选https。

pfSense使用CloudFlare动态域名,配置Let

在备用主机名里输入动态域名,或将禁用DNS重绑定检查和HTTP_REFERER选项选中,以避免触发防火墙的登录保护。

pfSense使用CloudFlare动态域名,配置Let

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

pfSense使用CloudFlare动态域名,配置Let

证书设置

转到防火墙>系统>插件管理,在可用插件里搜索Acme并安装。

pfSense使用CloudFlare动态域名,配置Let

导航到服务>Acme Certificates,帐户密钥选项卡,添加一个帐号。输入帐户密钥的名称,Acme Server选择Production,单击创建新帐户密钥,然后单击注册Acme帐户密钥,最后选择保存即可。

pfSense使用CloudFlare动态域名,配置Let

添加证书。单击证书选项卡,点击右下角添加按钮添加证书。输入证书的名称、选择证书的状态、Acme帐号以及私钥的算法。

pfSense使用CloudFlare动态域名,配置Let

在Domain SAN list选项,Domainname输入*.pfchina.site或jx.pfchina.site,Method选DNS-Cloudflare,输入CloudFlare域名的其他相关信息。这些信息都可以在Cloudflare找到。

pfSense使用CloudFlare动态域名,配置Let

在Actions list选项,添加一条Shell Commamd命令:/etc.rc.restart_webgui

现在返回到证书选项卡,然后选择颁发/续订,尝试创建证书,这需要一些时间,大概两分钟左右。

pfSense使用CloudFlare动态域名,配置Let

出现以上提示,表示证书创建成功。回到证书选项卡,可以看到证书的相关信息。

pfSense使用CloudFlare动态域名,配置Let

证书有效期只有三个月,在常规选项卡选中定时任务,让程序自动申请延期。

pfSense使用CloudFlare动态域名,配置Let

现在转到系统>证书管理,在CAs选项卡,会多出两个CA。

pfSense使用CloudFlare动态域名,配置Let

在证书选项卡,多出一个Acme创建的证书。

pfSense使用CloudFlare动态域名,配置Let

在证书吊销选项卡,会看到Acmecert 吊销列表。

pfSense使用CloudFlare动态域名,配置Let

最后转到系统>高级选项,管理员访问选项卡,在SSL/TLS证书选项下拉菜单中选择由Acme创建的SSL证书,然后单击保存。

pfSense使用CloudFlare动态域名,配置Let

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

pfSense使用CloudFlare动态域名,配置Let

相关文章: