我刚刚使用生成了新的 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.pem
并privkey.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 作业将使您的证书永远保持最新状态(假设)。