ssl - 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
解决方案
使用 HAProxy,您通常有两个选项来处理与 TLS 相关的场景。TLS Passthrough
和TLS 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
您可以在此处找到有关这两种方法的更多信息。
希望这可以帮助。
推荐阅读
- postgresql - postgresql RDS - 无法写入哈希连接临时文件:设备上没有剩余空间
- android - 如何在房间数据库中使用 ForeignKey.SET_DEFAULT?
- node.js - 如何使用官方mongodb客户端在nodejs中的mongodb中实现twitter和facebook api之类的基于光标的分页?
- android - 谷歌播放控制台应用程序因权限而被拒绝
- css - Angular Material cdk-container 和主站点固定标头 z-index 覆盖
- php - 当我使用 Graph API 将一些内容发布到 Facebook 上的页面时,它只对我可见
- f# - FSC : 错误 FS0193: 设备未准备好
- python - 将 onnx 模型转换为 keras
- spring - 如何在 Spring 中使用基于令牌的身份验证连接到 Amazon RDS?
- cordova - cordova-plugin-media-capture 使 IOS 13 崩溃