OPNsense中使用Let’s Encrypt进行HAProxy

如果我们需要在OPNsense防火墙后面发布博客或其他网站,可以使用在OPNsense中集成的HAProxy和Let’s Encrypt插件。

一、安装插件

首先,安装os-acme-client(Let’s Encrypt)和os-haproxy的插件。

二、Let’s Encrypt

先设置“Let’s Encrypt”。在菜单中的“服务”下找到“Let’s Encrypt”,然后进行以下设置:

1、常规设置

选中所有三个复选框:启用插件,自动续订和HAProxy集成。自动续订将触发创建cron作业,该作业可以自动更新证书。HAProxy集成会自动将“Let’s Encrypt”所需的内容添加到HAProxy。

2、添加帐户

添加一个或多个在颁发证书时使用的帐户。单击右侧的加号,然后输入名称和电子邮件就可以了。

3、编辑验证方法

添加一种或多种在颁发和更新证书时用于验证的方法。这些方法有两种不同的质询类型,DNS-01和HTTP-01,建议使用HTTP-01。

单击右侧的加号添加验证方法。确保选中启用,然后输入名称,将质询类型设置为HTTP-01。将HTTP服务更改为HAProxy HTTP前端集成。如下图所示:

4、添加重启操作

单击加号添加重新启动操作。输入名称,然后选择“ 重新启动HAProxy”(OPNsense插件)作为“重新启动命令” 。

5、编辑证书

通用名称是要使用的域名,这里是blog.bagro.se。如果要将证书用于其他子域,也可以在备用名称中添加备用名称。

LE帐户是在帐户下创建的帐户。

验证方法是之前创建的验证方法。

重新启动操作是先前创建的操作,这里可以添加多个操作。

其他保留为默认值。

三、HAProxy

这里有6个选项卡,我们只需要设置Real Server、虚拟服务和规则与检查。

1、添加Real Server(真实服务器)

在这里设置与防火墙后面服务器的连接。例如,可以让Ghost在IP地址为192.168.21.80的服务器上运行,其中Ghost在端口2368上进行监听。设置如下:

这里有一个acme_challenge_host的服务器,该服务器是由Let’s Encrypt插件自动添加。

2、虚拟服务-后端池

后端池是一组实际服务器,可以在整个链的上游部分使用。由于HAProxy是一个负载平衡器,我们可以将多个真实服务器添加到后端池,当然有时候只需一个就足够了。

在这里,我们只需要填写名称和服务器就可以,服务器选择前面创建的Real Server(真实服务器)。

与Real Server一样,名为acme_challenge_backend的后端池也是由Let’s Encrypt插件创建的。

3、规则和检查-条件

条件用于匹配请求中的某些属性,例如在此处创建的主机名。

该名称可以是任何名称,但必须容易识别。条件类型选“主机匹配”,“主机包含”也可以。主机字符串必须为域名,如上图的blog.bagro.se。

4、规则和检查-规则

如果条件成立,则规则将验证一个或多个规则并执行功能。在本例中,我们将连接到后端池。

与条件一样,该名称可以是任何名称,但必须设置一个可以容易识别的名称。在“Select conditions(选择条件)”中,选择先前创建的条件。这里可以选择多个。执行功能应为“使用指定的后端池”,通常是默认值。在“使用后端池”中,选择先前创建的后端池。

5、虚拟服务-公共服务

公共服务是公开提供的内容,使用规则来引导或阻止流量。我们要使用HTTP(端口80)创建一个公共服务,为HTTPS(443)创建一个公共服务,然后使用规则来实现。首先创建HTTP公共服务。

设置名称,在“侦听地址”中,添加0.0.0.0:80。这将侦听端口80的所有内容。然后向下滚动至“选择规则”,然后选择redirect_acme_challenges。保存并应用更改。

6、防火墙

在执行其他操作之前,还必须添加防火墙规则来允许HTTP和HTTPS流量进入HAProxy。
转到防火墙-规则-WAN,然后单击添加。如下图所示:

HTTP:将协议从任意更改为TCP。目标设置为此防火墙。目标端口设置HTTP。选中检查此规则处理的日志数据包。

HTTPS:将协议从任意更改为TCP。目标设置为此防火墙。目标端口设置为HTTPS。选中检查此规则处理的日志数据包。

7、签发证书

现在签发先前创建的证书。转到服务-Let’s Encrypt-证书。这时候证书的签发/续订日期列中没有任何日期。这是因为还没有签发。单击左侧的立即签发/续订证书按钮,等待几秒钟,如果证书签发成功,右侧的“签发/续订日期”列中就会出现一个日期。

8、完成公共服务

现在,我们可以完成公共服务的设置。创建一个新的用于HTTPS的公共服务。

输入名称。在“侦听地址”中,添加0.0.0.0:443。这将监听端口443上的所有内容。选中启用SSL卸载。在“证书”中,选择新颁发的证书。然后向下滚动到“选择规则”,然后选择您之前创建的规则。

9、HTTP到HTTPS重定向

由于我们仅在HTTPS上提供站点,因此我们希望将HTTP重定向到HTTPS。可以通过条件和规则来完成。

转到“规则和检查-HAProxy设置中的条件”并添加条件。此条件将用于检查是否已建立SSL / TLS连接。

输入容易识别的名称。条件类型应为SSL / TLS连接建立。选中否定条件。

现在转到“规则和检查-规则”并创建一个新规则。

输入名称。在“选择条件”中,选择刚创建的条件。执行功能应设置为http-request重定向。在“ HTTP重定向”中,输入方案https代码301。

最后一步,返回“公共服务”并编辑HTTP公共服务。向下滚动到“选择规则”,然后添加刚刚创建的HTTP重定向规则。

保存,并测试和应用就可以了。如果想在某个时间托管更多站点,则可以添加证书、真实服务器、后端池、条件和规则,然后如上所述添加规则并将其添加到HTTPS公共服务器中。