首页 > 解决方案 > haproxy 反向 ssl 终止

问题描述

如何使用 ha 代理实现反向 SSL 终止?从我通过 HAproxy 的后端,我需要启用 https 的 Web 服务。如何通过 HAProxy 成功地将所有流量代理到该服务?

下面的结果Unable to communicate securely with peer: requested domain name does not match the server's certificate.

frontend foofront
    bind 127.0.0.1:443
    mode tcp
    default_backend foo

backend fooback
    mode tcp
    balance leastconn
    server foo foo.bar.com:443  check

标签: sslhttpshaproxy

解决方案


使用 HAProxy,您通常有两个选项来处理与 TLS 相关的场景。TLS PassthroughTLS Termination

TLS 直通

看起来您正在尝试在您给出的示例中执行此操作。

在这种模式下,HAProxy不会以任何方式接触流量,而只是将其转发到后端。当涉及到 TLS 时,这意味着后端必须具有用于访问它的域的适当证书 - 如果您HAProxy正在处理 的流量myexample.com,则后端服务器将需要myexample.com安装适当的证书。

您始终可以使用以下命令检查提供的证书openssl s_client

openssl s_client -connect localhost:443

TLS 终止

或者,您可以自行终止 TLS 流量HAProxy。这将允许您使用任何后端(加密和未加密)。在这种情况下,HAProxy它自己会解密流量myexample.com并将其转发到后端。

在您的情况下,配置看起来像:

frontend foofront
    bind 127.0.0.1:80
    bind 127.0.0.1:443 ssl crt /path/to/cert/for/myexample.com
    mode tcp
    default_backend foo

backend foo
    mode tcp
    balance leastconn
    server foo foo.bar.com:443 check ssl verify none # or verify all to enforce ssl checking

您可以在此处找到有关这两种方法的更多信息。

希望这可以帮助。


推荐阅读