好的,我有两台服务器,一台旧的(Ubuntu 16),一台新的(Ubuntu 20)。
它们都具有 Haproxy,并且在配置中它们绑定到相同的端口和相同的 .PEM 证书。当我使用 Windows 主机上的 OpenSSL s_client 测试 SSL 证书时,我在测试旧服务器时看到了预期的证书,但新服务器出于某种原因发送了后端服务器的证书,这是一个内部证书。
因此,为了帮助理解,旧服务器发送了ldaps.domain.com
的证书信息。但新服务器发送了internalDC.domain.com
的证书。
两个 Haproxy 服务器都允许 TCP/636 从 DMZ 到 LAN,它们都使用完全相同的后端服务器,所以我完全感到困惑。
如有任何建议我将不胜感激!
答案1
最后,解决这个问题的办法确实是在 s_client 中使用“-servername”开关。我之前根本不知道它默认不处理 SNI。@Ginnungagap 确实引导我朝这个方向前进。
这也让我发现 haproxy.cfg 中的 SNI 配置不太正确。最初我有这样一行:
使用后端如果{ ssl_fc_sni_reg domain.com }
我这个白痴竟然没有意识到“reg”代表正则表达式。一旦我将其更改为“end”,因为我试图匹配 domina 名称本身,那么一切就都解决了。