如何使用 ha 代理实现反向 SSL 终止? 我需要通过 HAproxy 从我的后端访问启用 https 的 Web 服务。如何通过 HAProxy 成功代理该服务的所有流量?
以下结果无法与对等方安全通信:请求的域名与服务器的证书不匹配。
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
最佳答案
使用 HAProxy,您通常有两种选择来处理 TLS 相关场景。 TLS 直通
和 TLS 终止
。
TLS 直通
看起来您正在尝试在给出的示例中执行此操作。
在此模式下,HAProxy
不会以任何方式接触流量,而只是将其转发到后端。当涉及 TLS 时,这意味着后端必须为其访问的域拥有正确的证书 - 如果您的 HAProxy
正在处理 myexample.com
、后端服务器的流量需要安装 myexample.com
的适当证书。
您始终可以使用openssl s_client
检查提供的证书:
openssl s_client -connect localhost:443
TLS 终止
或者,您可以终止 HAProxy
本身上的 TLS 流量。这将允许您使用任何后端(加密和未加密)。在这种情况下,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
您可以找到有关这两种方法的更多信息 here .
希望这有帮助。
关于ssl - haproxy反向ssl终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50152450/