HAProxy:使用 Let's Encrypt 配置 SSL

HAProxy:使用 Let's Encrypt 配置 SSL

我刚刚使用生成了新的 SSL 证书让我们加密。现在我正在尝试配置 HAProxy。

这些是文件夹和证书:

700  archive
     |--------> 755 company.cxx
                    |------------> 644 fullchain.pem
                    |------------> 644 cert.pem
                    |------------> 644 (etc.)  

目前,这些是文件夹的权限和软链接文件夹中的证书archive

700  live
     |--------> 755 company.cxx
                    |------------> 777 fullchain.pem
                    |------------> 777 cert.pem
                    |------------> 777 (etc.)         

HAProxy 配置如下:

frontend public
    bind :80
    bind :443 ssl crt /etc/letsencrypt/live/company.cxx/fullchain.pem

错误如下:

Proxy 'public': no SSL certificate specified for bind ':443' at [/etc/haproxy/haproxy.cfg:12] (use 'crt').
Fatal errors found in configuration.

我不知道权限是否是问题所在,但是我担心哪种方法才是使用 HAProxy 执行此操作的正确方法。我将非常感谢您的帮助。

编辑:只是为了测试,我尝试复制证书,/etc/haproxy但没有成功。

答案1

解决方案解释如下数字海洋。 简而言之:

  • 创建一个 pem 文件,连接fullchain.pemprivkey.pem
  • 将新文件移动到/etc/haproxy/certs
  • 配置 HAProxy

答案2

正如您在自己的答案中指定的,LetsEncrypt(LE)所需的最低限度是fullchain.pem和的连接版本privkey.pem

但每次证书即将过期时手动运行 LE 客户端有点违背了使用 LE 的目的。此外,如果您的 HAProxy 实例已经在端口 80 上监听其他网站,您就无法在独立模式下使用 LE 客户端。

另外,您可能对此感兴趣HAProxy ACME 验证插件

该插件利用 HAProxy 的 Lua API,允许 HAProxy 使用 ACME 客户端提供给指定目录的令牌/密钥认证文件来回答验证挑战。

本质上,HAProxy 将所有与众所周知的 ACME 验证路径匹配的请求发送到 LUA 插件,该插件会自动回答所请求的任何域的请求。您还可以设置一个 cron 作业,定期检查证书到期情况并在到期前自动续订。因此,您唯一的手动步骤是请求域的初始证书并将 PEM 引用添加到您的 HAProxy 配置文件中。之后,cron 作业将使您的证书永远保持最新状态(假设)。

相关内容