2017-12-22 15 views
0

3 개의 백엔드 API 서버 (HTTPS)가 있으며 API 서버는 사용자 인증서에 따라 서로 다른 사용자에 대해 서로 다른 권한을 가지고 있습니다. 아래의 3 백엔드 서버로드 균형 조정을 위해 아파치를 구성하고 있습니다.Apache 클라이언트 인증서 구성 프록시에 대한 인증

인증서와 클라이언트 요청 apache는, 만 요청이 API 서버가 아닌 인증서 및 API 서버 응답 권한이없는 사용자에 갈 때, 나는 SSLProxyMachineCertificateFile를 사용하여 시도하는 것이
<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> 

문제가 있지만, 그것은 단지 한 세트를 받아 인증서가 있으며 매번 동일한 인증서를 전달하지만이 경우 인증은 인증서를 기반으로 만 발생합니다.

맹목적으로 HTTPS 요청을 API로 전달할 수있는 방법이 있습니까? 또는 다른 어떤 제안도 열렬히 환영 받는다.

+0

로드 밸런서 대신 proxyPass를 시도 할 수 있습니다. –

+0

@NitinDhomse 궁극적 인 목표는 단일 서버에 과부하가되는 것이 아니라 proxyPass를 시도했지만 도움이되지 않는 것입니다. –

+0

사용자가 Apache와 대화하고 Apache가 균형 잡힌 컴퓨터와 대화합니다. 이것이 바로 프록시의 핵심이며, 클라이언트가 서버와 직접 대화하지 못하도록 보장합니다. 균형 잡힌 서버 관점에서 볼 때 Apache가 클라이언트입니다. 내가 할 수있는 유일한 방법은 SSL 오프로드를 수행하지 않는 레이어 4 네트워크로드 밸런서를 사용하는 것입니다. Apache가 아닙니다. – Nic3500

답변

0

문자열에는 0x07 SSL_CERT 변형시키는 OP의 질문을 해결 한 이후의 해답

사용자가 Apache와 대화하면 Apache는 균형 잡힌 컴퓨터와 대화합니다. 이것이 바로 프록시의 핵심이며, 클라이언트가 서버와 직접 대화하지 못하도록 보장합니다. 균형 잡힌 서버 관점에서 볼 때 Apache가 클라이언트입니다.

내가 할 수있는 유일한 방법은 SSL 오프로드를 수행하지 않는 레이어 4 네트워크로드 밸런서를 사용하는 것입니다. 즉 Apache가 아닙니다.

0

아파치 문서에 설명 된대로, 대신에 HTTP 프록시의 AJP로 전환하십시오 : https://httpd.apache.org/docs/2.4/en/mod/mod_proxy_ajp.html

내가 잘 이해 당신이 무슨 말을하는지, 당신이 AJP의 기능입니다 전달 될 수있는 클라이언트 인증서를 필요로하는 경우 :

요청 패킷 구조

+0

내 백 엔드 서버가 HTTPS 요청 만 받아들이므로 nginx 레이어 4로드 균형 조정기를 구성했으며 현재 잘 작동합니다. –