在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 服务器的运行状态(启动或关闭)。本示例中该功能已关闭,你可以根据需要启用并选择合适的检测方法。

健康检查设置

完成配置后,点击 SaveApply Changes

配置前端

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

前端设置

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

选择默认后端

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

选择SSL证书

点击 SaveApply Changes


4. 添加防火墙规则

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

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


注意事项

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

觉得内容不错?我要

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