为代理配置 Apache 客户端证书身份验证

为代理配置 Apache 客户端证书身份验证

我有 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?或者热烈欢迎任何其他建议。

答案1

用户与 对话Apache,然后Apache与 对话balanced machines。这就是代理的作用,它确保客户端不直接与服务器对话。因此从平衡服务器的角度来看,Apache是客户端。所以这Layer 4 load balancing是唯一的方法。

对于那些想知道解决方案的人,我已配置NGINXL4 load balancing现在它运行良好。

相关内容