Haproxy:具有自签名证书的 SSL 加密后端

Haproxy:具有自签名证书的 SSL 加密后端

我正在配置 HAProxy,使其终止 SSL,这样就只有一个地方可以配置购买的 SSL 证书。但是,我希望与后端服务器的连接也使用 SSL 加密。

我发现的一个建议是在后端服务器上创建自签名证书,然后在每行服务器上设置“verify none”。... 因此,从浏览器到 HAProxy 的连接将使用官方购买的 SSL 证书,但从 HAProxy 到后端服务器的连接将使用自签名证书。自签名证书的好处是它们是免费的,不需要更新和维护(我可以将到期时间设置在很远的未来,避免每年安装新的证书)。然而,可以理解的是,这会使后端面临 MITM 攻击,我读过的一些资料并不推荐这样做。

我可以配置 HAProxy,以便可以在后端服务器上使用自签名证书,但也许以某种方式将自签名证书列入 HAProxy 服务器上的白名单?... 因此 HAProxy 到后端的连接将被加密,它不会受到 MITM 攻击,并且 HAProxy 会知道信任来自后端服务器的自签名证书。

我所描述的是否可行?我是 HAProxy SSL 终止的新手,因此任何建议都值得赞赏。

我的配置相关部分如下:

frontend www-in
    bind *:80
    bind *:443 ssl crt /etc/ssl-keys/my-public-ssl-key.pem no-sslv3

    mode http
    default_backend https-backend
    # force redirect to https
    redirect scheme https if !{ ssl_fc }

backend https-backend
    balance leastconn
    server web1 1.1.1.1:443 check ssl verify none
    server web2 2.2.2.2:443 check ssl verify none

    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }

答案1

这个问题实际上与无关HAProxy,而是与管理证书和证书颁发机构有关。

不确定您使用的是哪种操作系统,因为您没有说明,但如果它是某种 Linux 风格(尽管以下内容适用于Debian和衍生产品):

  • 确保您已经ca-certificates安装了该包。

  • 您正在使用自己的证书创建证书证书颁发机构(大约)。

  • 将此your ca root certca 的 放入 内/usr/local/share/ca-certificates/name-of-your-ca/。(您可能必须name-of-your-ca自行创建文件夹。)确保your ca root cert具有.crt扩展名。

    (默认情况下,/usr/local/share/ca-certificates/由 拥有root:staff,因此使用sudoroot来执行此操作。)

  • 执行update-ca-certificates(通过sudo/ 作为root)。

  • 执行后,应该有一个符号/etc/ssl/cert/your-ca-root.pem链接到的文件/usr/local/share/ca-certificates/name-of-your-ca/your-ca-root.crt

  • 启用验证HAProxy并获利。

相关内容