Użycie Https między Apache Loadbalancer a backendami


30

Korzystam z serwera Apache (2.4) skonfigurowanego jako moduł równoważenia obciążenia przed 2 serwerami Apache. Działa dobrze, gdy używam połączeń HTTP między loadbalancer i backendami, jednak używanie https nie działa. Konfiguracja modułu równoważenia obciążenia:

SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
<Proxy balancer://testcluster>
  BalancerMember https://[Backend1]:443/test
  BalancerMember https://[Backend2]:443/test
</Proxy>
ProxyPass /test balancer://testcluster

Zaplecze ma na razie tylko samopodpisane certyfikaty, dlatego weryfikacja certyfikatu jest wyłączona.

Dziennik błędów modułu równoważenia obciążenia zawiera następujące elementy:

[proxy:error] [pid 31202:tid 140325875570432] (502)Unknown error 502: [client ...] AH01084: pass request body failed to [Backend1]:443 ([Backend1])
[proxy:error] [pid 31202:tid 140325875570432] [client ...] AH00898: Error during SSL Handshake with remote server returned by /test/test.jsp
[proxy_http:error] [pid 31202:tid 140325875570432] [client ...] AH01097: pass request body failed to [Backend1]:443 ([Backend1]) from [...] ()

Strona błędu w przeglądarce zawiera:

Proxy Error

The proxy server could not handle the request GET /test/test.jsp.
Reason: Error during SSL Handshake with remote server

Jak już wspomniałem powyżej, zmiana konfiguracji na protokół HTTP i port 80 działa. Również połączenia https między klientem a modułem równoważenia obciążenia działają, więc moduł ssl modułu równoważenia obciążenia wydaje się być poprawnie skonfigurowany. Łączenie bezpośrednio z backendem przez https również nie powoduje żadnych błędów.

Z góry dziękuję za poświęcony czas


Edycja: zorientowałem się, problem polega na tym, że nazwa zwyczajowa moich certyfikatów nie pasuje do nazwy serwera. Myślałem, że SSLProxyVerify none nie spowoduje zignorowania tego niedopasowania, ale tak nie jest. Przed Apache 2.4.5 to sprawdzenie można wyłączyć, wyłączając SSLProxyCheckPeerCN, ale w wyższych wersjach (używam 2.4.7) należy również wyłączyć SSLProxyCheckPeerName .

Dokumentacja Apache dla sslproxycheckpeername

Działająca konfiguracja wygląda następująco:

SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off

<Proxy balancer://testcluster>
  BalancerMember https://[backend1]:443/test
  BalancerMember https://[backend1]:443/test
</Proxy>
ProxyPass /test balancer://testcluster

Niestety nie mogę odpowiedzieć na własne pytanie z powodu braku reputacji, więc zredagowałem swoje pytanie, mam nadzieję, że pomoże to każdemu, kto napotka podobny problem


Ciekawy. Kiedyś robiłem to z apache2.2 i nigdy nie musiałem tak weryfikować SSLProxyVerify i nigdy nie miałem problemów z certyfikatami z podpisem własnym. Jesteś pewien, że serwer zaplecza jest w porządku.
ETL

@ETL Nie wiem, czy „SSLProxyVerify none” jest wymagane, czy nie, właśnie dodałem, że mam nadzieję, że to rozwiąże problem. Wywołanie „wget https: // [backend1] /test/test.jsp --no-check-certificate” na serwerze usługi równoważenia obciążenia pobiera oczekiwany plik. ng
user3240383

Odpowiedzi:


16

Problem polegał na tym, że nazwa pospolita certyfikatów nie zgadzała się z nazwą serwera.

Przed Apache 2.4.5 to sprawdzenie można wyłączyć za pomocą, SSLProxyCheckPeerCN offale w wyższych wersjach (takich jak 2.4.7) SSLProxyCheckPeerName offnależy również określić.

Dokumentacja Apache dla SSLProxyCheckPeerName

Działająca konfiguracja wygląda następująco:

SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off

<Proxy balancer://testcluster>
  BalancerMember https://[backend1]:443/test
  BalancerMember https://[backend1]:443/test
</Proxy>
ProxyPass /test balancer://testcluster

Możesz sprawdzić wersję Apache, którą posiadasz :

apachectrl -V

Hej, mam dokładnie ten sam problem, ale konfiguracja jest trochę inna: te <Location /margin-tool> ProxyPass https://xxxx.thoughtworks.net:8443/margin-tool ProxyPassReverse https://xxxx.thoughtworks.net:8443/margin-tool </Location>same ustawienia nie działają. Jakieś pomysły?
user157735,

0

Dodanie poniżej rozwiązało problem

SSLProxyProtocol +TLSv1

5
Podanie mistycznych próbek konfiguracji nie jest odpowiedzią dobrej jakości. Ciągi do kopiowania i wklejania z Internetu nie są tym, co robi profesjonalny administrator systemu. Wyjaśnij, co robi i dlaczego.
Peter mówi, że przywróć Monikę

wpadłem na to z java12 - między innymi rozwiązało to mój problem ....
womd

-2

używam apache 2.4.9 i dodając do httpd-ssl.conf następujący kod

SSLProxyProtocol + SSLv3 + TLSv1 + TLSv1.1

rozwiązałem problemy


3
Słyszałeś kiedyś o POODLE ? SSLv3 powinien być wyłączony.
Sven

2
SSLv3 jest podatny na atak
poufne
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.