【问题标题】:Configure Apache Client Certificate Authentication for proxy为代理配置 Apache 客户端证书身份验证
【发布时间】:2017-12-22 05:25:21
【问题描述】:

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

【问题讨论】:

  • 你可以试试 proxyPass,而不是负载均衡器。
  • @NitinDhomse 最终目标不是让单个服务器超载,虽然我尝试了 proxyPass,但没有帮助
  • 用户与 Apache 对话,然后 Apache 与平衡的机器对话。这就是代理的意义所在,它确保客户端不会直接与服务器对话。所以从平衡服务器的角度来看,Apache 是客户端。我认为这样做的唯一方法是使用不执行 SSL 卸载的第 4 层网络负载平衡器。即不是 Apache。
  • @Nic3500 谢谢我配置了 Nginx 第 4 层负载均衡器,现在它工作正常 :) 节日快乐..
  • np,我将我的评论转换为答案,当你有 2 秒时,请接受。节日快乐!

标签: apache ssl


【解决方案1】:

将评论转换为答案,因为它解决了 OP 的问题。

用户与 Apache 对话,然后 Apache 与平衡的机器对话。这就是代理的意义所在,它确保客户端不会直接与服务器对话。所以从平衡服务器的角度来看,Apache 是客户端。

我认为这样做的唯一方法是使用不执行 SSL 卸载的第 4 层网络负载平衡器。即不是 Apache

【讨论】:

    【解决方案2】:

    尝试切换到 AJP 而不是 HTTP 代理,如 Apache 文档中所述:https://httpd.apache.org/docs/2.4/en/mod/mod_proxy_ajp.html

    如果我理解你的意思,你需要转发客户端证书,这是 AJP 的一个特性:

    请求包结构

    ?ssl_cert 0x07 字符串

    【讨论】:

    • 我的后端服务器只接受 HTTPS 请求,我配置了 Nginx 第 4 层负载均衡器,现在它工作正常..
    猜你喜欢
    • 2022-06-23
    • 2018-09-16
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 2011-04-09
    • 2013-10-07
    相关资源
    最近更新 更多