为代理服务器配置Apache客户端证书身份验证
我有3个后端API服务器shttp,API服务器根据用户证书对不同的用户有不同的授权权限,我正在配置apache以平衡3个后端服务器的负载,如下所示为代理服务器配置Apache客户端证书身份验证,apache,ssl,Apache,Ssl,我有3个后端API服务器shttp,API服务器根据用户证书对不同的用户有不同的授权权限,我正在配置apache以平衡3个后端服务器的负载,如下所示 <VirtualHost *:zzzz> SSLEngine on SSLCertificateFile /path/to/server.crt SSLCertificateKeyFile /path/to/server.key SSLCACertificateFile /path
<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?或者欢迎任何其他建议。尝试切换到AJP而不是HTTP代理,如Apache文档中所述: 如果我完全理解您的意思,您需要转发客户端证书,这是AJP的一个功能: 请求包结构 ?ssl_证书0x07字符串
将评论转化为答案,因为它解决了OP的问题
用户与Apache对话,然后Apache与平衡机器对话。这就是代理的要点,它确保客户端不会直接与服务器通信。因此,从平衡服务器的角度来看,Apache是客户端
我能看到的唯一方法是使用第4层网络负载平衡器,它不进行SSL卸载。i、 e.不使用Apache而使用负载平衡器您可以尝试proxyPass。@NitinDhomse最终目标不是使单个服务器过载,我尝试了proxyPass,但没有帮助用户与Apache对话,然后Apache与平衡的机器对话。这就是代理的要点,它确保客户端不会直接与服务器通信。因此,从平衡服务器的角度来看,Apache是客户端。我能看到的唯一方法是使用第4层网络负载平衡器,它不进行SSL卸载。i、 e.不是Apache。@Nic3500谢谢我配置了Nginx第4层负载平衡器,现在它工作正常:happy holiday..np,我将我的评论转换为回答,当你有2秒的时间时,请接受。节日快乐!我的后端服务器只接受HTTPS请求,我配置了nginx第4层负载平衡器,现在工作正常。。