如何使用ha 代理实现反向 SSL 终止? 从我的后端通过 HAproxy 我需要启用 https 的网络服务。如何通过 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
使用 HAProxy,您通常有两个选项来处理与 TLS 相关的场景。TLS Passthrough
和TLS Termination
.
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
您可以在此处找到有关这两种方法的更多信息。
希望这有帮助。