我有3个后端API服务器(HTTPS),API服务器根据用户证书对不同用户拥有不同的授权权限,我正在配置apache以对3个后端服务器进行负载均衡,如下所示
<VirtualHost *:zzzz>
SSLEngine on
SSLCertificateFile /path/to/server.crt
SSLCertificateKeyFile /path/to/server.key
SSLCACertificateFile /path/to/ca.crt
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
<Proxy balancer://api_server>
BalancerMember https://xx.xx.xx.xx:yyyy
BalancerMember https://xx.xx.xx.xx:yyyy
</Proxy>
ProxyPass / balancer://api_server/
</VirtualHost>
问题是,当客户端请求apache
,带有证书时,只有请求进入API服务器,而不是证书,API服务器响应未经授权的用户,我尝试使用SSLProxyMachineCertificateFile
但是它只接受一组证书,并且每次都传递相同的证书,但在这种情况下,授权仅基于证书发生。
有没有办法盲目地将HTTPS请求转发给API?或热烈欢迎任何其他建议。
答案 0 :(得分:1)
将评论转换为答案,因为它解决了OP的问题。
用户与Apache交谈,然后Apache与平衡机通话。这是代理的重点,它确保客户端不直接与服务器通信。所以从平衡服务器的角度来看,Apache就是客户端。
我能看到的唯一方法就是使用不进行SSL卸载的第4层网络负载均衡器。即不是Apache
答案 1 :(得分:0)
尝试切换到AJP而不是HTTP代理,如Apache doc:https://httpd.apache.org/docs/2.4/en/mod/mod_proxy_ajp.html
中所述如果我完全理解您所说的内容,您需要转发客户端证书,这是AJP的一项功能:
请求数据包结构
?ssl_cert 0x07字符串