2017-12-22 10 views
0

私は3つのバックエンドAPIサーバー(HTTPS)を持ち、APIサーバーはユーザー証明書に基づいて異なるユーザーに対して異なる許可を持っています。以下のように3つのバックエンドサーバーの負荷を分散するようにApacheを構成しています。Apacheクライアント証明書を設定する

<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> 

問題は、唯一の要求は、APIサーバではなく、証明書、およびAPIサーバ応答不正なユーザーになると、クライアントの要求apache、証明書を使用し、私はSSLProxyMachineCertificateFileを使用してみましたが、それは唯一の1セットを受け入れることです証明書を発行し、毎回同じ証明書を渡しますが、この場合、認証は証明書に基づいてのみ行われます。

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

Apacheのドキュメントで説明したように、代わりにHTTPプロキシのAJPに切り替えてみてください、私はあなたが言っているのか、あなたはAJPの機能でクライアント証明書を転送することが、必要十分理解していればhttps://httpd.apache.org/docs/2.4/en/mod/mod_proxy_ajp.html

:?

リクエストパケット構造

+0

私のバックエンドサーバはHTTPSリクエストのみを受け入れますが、私はnginxレイヤ4ロードバランサを設定しました。 –

関連する問題