在pfSense上为HAProxy配置使用LetsEncrypt

本文摘要本文介绍如何将 HAProxy 配置为使用 LetsEncrypt 自动管理证书,以确保 HAProxy 后面的 Web 服务器上的证书受到 SSL 安全保护。 在开始配置之前,有以下要点需要说明:你必须有权管理 Web 服务器域名所在的 DNS 区域。LetsEncrypt 分发证书时必须证明你是域的所有者。有两种验证方式:一是让 LetsEncrypt 使用公开可用的 DNS 记录与客户端(本...

本文介绍如何将 HAProxy 配置为使用 LetsEncrypt 自动管理证书,以确保 HAProxy 后面的 Web 服务器上的证书受到 SSL 安全保护。
在开始配置之前,有以下要点需要说明:

  • 你必须有权管理 Web 服务器域名所在的 DNS 区域。
  • LetsEncrypt 分发证书时必须证明你是域的所有者。有两种验证方式:一是让 LetsEncrypt 使用公开可用的 DNS 记录与客户端(本示例中为 HAProxy)通信;二是检查 DNS 区域内的特定记录,若找到则证明你拥有管理权限。本示例使用第二种方法。

基本操作流程:
互联网上的 Web 浏览器访问网站时,浏览器通过 DNS 解析到的 IP 地址发送请求。HAProxy 接收该请求,并建立到内部 Web 服务器的连接,充当浏览器与 Web 服务器之间的代理。
LetsEncrypt 的信任建立分为两个阶段:初次获取证书或旧证书即将到期时获取新证书。信任阶段的流程如下:

  • 请求 HAProxy 生成密钥,并根据你的密钥将所需的身份信息发送给 LetsEncrypt。
  • LetsEncrypt 为你创建一个帐户并回复验证信息。
  • LetsEncrypt 要求你在相应的 DNS 区域中创建并填充一个新的 TXT 记录。
  • 你创建 TXT 记录,并通知 LetsEncrypt 进行验证。
  • LetsEncrypt 验证 TXT 记录后,确认你的帐户与该域关联。

下面开始配置步骤。


1. 安装并配置 LetsEncrypt 插件

登录 pfSense,安装 “acme” 插件。

安装acme插件

安装完成后,依次进入 服务 > Acme > 帐户密钥 选项卡。
按下方示例填写信息,ACME Server 选择 Production(也可以选用 Test 服务器)。点击 Create New Account Key,注册 ACME 帐户密钥后点击 Save 保存。

创建ACME帐户密钥

切换到 Certificates 选项卡,点击 Add 添加新证书。

添加新证书

按下方示例填写:域名字段输入完整的 FQDN,Method 选择 DNS-Manual(你也可以根据所用 DNS 供应商选择其他方法)。后续需要将 TXT 记录手动添加到域中。填写完成后点击 Save。

证书设置详情

返回证书列表,点击 Issue 按钮颁发证书。

颁发证书

页面上会显示大量“绿色”字符的输出信息,类似如下:

命令输出显示TXT记录

从输出中需要关注以下内容(示例):
[Fri Jan 8 17:19:38 ACDT 2021] Add the following TXT record:
[Fri Jan 8 17:19:38 ACDT 2021] Domain: ‘_acme-challenge.secure.agix.com.au’
[Fri Jan 8 17:19:38 ACDT 2021] TXT value: ‘lkjHJGfKUyFgJH78YUiJLHkgfRTfKUYJHiH’

将上述 TXT 值 添加到对应域名的 DNS 管理界面,作为新的 TXT 记录。本示例在 Cloudflare 上的添加结果如下:

在DNS中添加TXT记录

添加完成后,回到 LetsEncrypt 的设置页面,点击 Renew 按钮,即可获取新的证书。


2. 设置自动续订

进入 General Settings 选项卡,勾选 Cron Entry 选项,点击 Save 保存。这样 LetsEncrypt 将按照计划任务自动更新证书。

设置自动续订计划任务


3. 安装并配置 HAProxy

在 pfSense 中安装 HAProxy 插件。

安装HAProxy插件

进入 服务 > HAProxy > 设置 选项卡。

HAProxy设置

将 Max SSL … 的值设置为 2048,然后点击 Save。

设置Max SSL为2048

配置后端服务器

切换到 Backend 选项卡,参照下图进行配置。
本示例中的内部 Web 服务器侦听端口为 5000(如需端到端加密可改为 80 或 443,本文不做展开)。

后端服务器设置

HAProxy 需要一种方法来确定内部 Web 服务器的运行状态(启动或关闭)。本示例中该功能已关闭,你可以根据需要启用并选择合适的检测方法。

健康检查设置

完成配置后,点击 Save 并 Apply Changes。

配置前端

切换到 Frontend 选项卡,参照下图设置。

前端设置

将 Default Backend 选择为之前创建的后端。

选择默认后端

接着指定要使用的 SSL 证书。

选择SSL证书

点击 Save 并 Apply Changes。


4. 添加防火墙规则

最后,需要在防火墙的 WAN 接口上添加一条允许规则,确保外部能够访问所配置的端口。

添加WAN防火墙规则允许访问


注意事项

  • 确保不要在 HAProxy 使用的同一端口或接口上运行 pfSense 强制门户(Captive Portal)。如需使用,可将强制门户的端口更改为其他值(例如 8443)。
  • 如果在使用证书时出现错误,你可以随时重新 Issue 并 Renew。但建议先通过 pfSense 的 证书管理 删除旧证书,再进行重新颁发。

觉得内容不错?我要

评论 暂无评论
暂无评论,快来抢沙发吧~