Apache 2.4 反向代理 SSL 问题

Apache 2.4 反向代理 SSL 问题

我正在尝试使用 Apache 创建以下设置:

UserBrowser ----Client Certificate---> LoadBalancer (Apache 2.4)
then
LoadBalancer (Apache 2.4) ----LB Client Certificate ----> Apache 2.2 Web Server 

因此,用户连接到负载均衡器并提供客户端证书 - 这可以正常工作。

然后,反向代理使负载均衡器连接到 Web 服务器,Web 服务器从负载均衡器请求证书,然后我收到以下错误:

Proxy client certificate callback: (0.0.0.0:443) entered
Proxy client certificate callback: (0.0.0.0:443) downstream server wanted client certificate but none are configured
[remote 0.0.0.1:443] SSL Proxy connect failed
[ssl:info] SSL Library Error: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure (SSL alert number 40)
[ssl:info] [remote 0.0.0.1:443] Connection closed to child 0 with abortive shutdown (server 0.0.0.0:443)
[ssl:info] [remote 0.0.0.1:443] SSL handshake failed: sending 502

负载均衡器配置:

SSLProxyEngine on
ProxyRequests off
ProxyPreserveHost on
Proxytimeout 600

SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off

SSLProxyMachineCertificateFile "/path/to/keyandcert.pem"

Web 服务器配置:

SSLVerifyClient require

如果我从 Web 服务器中删除 SSLVerifyClient,此方案将有效,然后流量将进行负载平衡。我需要在用户 - LB 之间和 LB - WS 之间进行客户端验证。

密钥 + 证书已使用 1024 位长模数生成

有人能洞察一下这里可能出了什么问题吗?

答案1

您的请求不明确。不过,我可以想象可能会出现以下情况:

  • 您打算构建一个客户端证书身份验证方案。在这种情况下,客户端应该由平衡器进行身份验证,因为无法使用 HTTP 感知平衡器、平衡器上的 SSL 卸载并将客户端证书传递到后端。一旦通过身份验证(或未通过),平衡器应使用 HTTP 标头将结果报告给后端。
  • 您打算创建一个简单的 SSL 卸载方案。在这种情况下,您不需要平衡器和后端之间的 HTTPS,因为它们通常使用受信任的传输相互通信。

无论哪种方式,您描述的方案都不完全符合上述任何一种情况。

PS 使用 nginx 作为平衡器,apache 早已不复存在。

相关内容