Назад | Перейти на главную страницу

Настройка проверки подлинности сертификата клиента Apache для прокси

У меня есть 3 сервера Backend API (HTTPS), серверы API имеют разные разрешения авторизации для разных пользователей на основе сертификата пользователя, я настраиваю apache для балансировки нагрузки 3 backend серверов, как показано ниже

<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? или любые другие предложения тепло приветствуются.

Пользователь разговаривает с Apache, затем Apache разговаривает с balanced machines. В этом суть прокси: он гарантирует, что клиенты не общаются с серверами напрямую. Итак, с точки зрения сбалансированного сервера, Apache это клиент. так Layer 4 load balancing это единственный путь.

Для тех, кому интересно решение, я настроил NGINX для L4 load balancing, теперь он работает нормально.