Frage Verwenden von Https zwischen Apache Loadbalancer und Backends


Ich benutze einen Apache (2.4) Server, der als Loadbalancer vor 2 Apache Servern konfiguriert ist. Es funktioniert gut, wenn ich HTTP-Verbindungen zwischen Loadbalancer und Backends verwende, aber die Verwendung von https funktioniert nicht. Die Konfiguration des Loadbalancers:

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

Da die Backends nur selbstsignierte Zertifikate haben, ist die Zertifikatsüberprüfung deaktiviert.

Das Fehlerprotokoll auf dem Loadbalancer enthält Folgendes:

[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 [...] ()

Die Fehlerseite im Browser enthält:

Proxy Error

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

Wie bereits oben erwähnt, ändert sich die Konfiguration in das HTTP-Protokoll und Port 80 funktioniert. Auch https-Verbindungen zwischen Client und Loadbalancer funktionieren, so dass das SSL-Modul des Loadbalancers korrekt eingerichtet zu sein scheint. Eine direkte Verbindung zum Backend über https führt ebenfalls zu keinen Fehlern.

Vielen Dank im Voraus für Ihre Zeit


Bearbeiten: Ich habe es herausgefunden, das Problem ist, dass der gemeinsame Name meines Zertifikats nicht mit dem Servernamen übereinstimmt. ich dachte SSLProxyVerify keine würde dazu führen, dass diese Nichtübereinstimmung ignoriert wird, tut es aber nicht. Vor Apache 2.4.5 kann diese Prüfung mit deaktiviert werden SSLProxyCheckPeerCN deaktiviert aber auf höheren Versionen (ich benutze 2.4.7) SSLProxyCheckPeerName deaktiviert muss auch angegeben werden.

Apache-Dokumentation für sslproxycheckpeername

Die Arbeitskonfiguration sieht folgendermaßen aus:

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

Leider kann ich meine eigene Frage aus Mangel an Ansehen nicht beantworten, also habe ich meine Frage bearbeitet, Ich hoffe, dass dies jedem hilft, der auf ein ähnliches Problem stößt


26
2018-02-22 20:18


Ursprung


Interessant. Ich habe das mit apache2.2 gemacht und musste nie SSLProxyVerify none machen und hatte nie Probleme mit selbstsignierten Zertifikaten. Sie sind sicher, dass der Backend-Server in Ordnung ist. - ETL
@ETL Ich weiß nicht, ob "SSLProxyVerify none" erforderlich ist oder nicht, ich habe das nur hinzugefügt, in der Hoffnung, dass es das Problem beheben könnte. Durch den Aufruf von "wget ​​https: // [backend1] /test/test.jsp --no-check-certificate" auf dem Load-Balancer-Server wird die erwartete Datei heruntergeladen. ng - user3240383


Antworten:


Das Problem bestand darin, dass der allgemeine Name des Zertifikats nicht mit dem Servernamen übereinstimmte.

Vor Apache 2.4.5 kann diese Prüfung mit deaktiviert werden SSLProxyCheckPeerCN off aber auf höheren Versionen (wie 2.4.7) SSLProxyCheckPeerName off muss auch angegeben werden.

Apache-Dokumentation für SSLProxyCheckPeerName

Die Arbeitskonfiguration sieht folgendermaßen aus:

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

Sie können Überprüfen Sie die Version von Apache, die Sie haben mit:

apachectrl -V

14
2018-02-22 22:47



Hey ich habe genau das selbe Problem ausser die Konfiguration ist etwas anders: <Location /margin-tool> ProxyPass https://xxxx.thoughtworks.net:8443/margin-tool ProxyPassReverse https://xxxx.thoughtworks.net:8443/margin-tool </Location> Die gleichen Einstellungen funktionieren nicht. Irgendwelche Ideen? - user157735


Hinzufügen von unten löste das Problem

SSLProxyProtocol +TLSv1

-1
2017-10-30 16:42



Mystische Config-Samples zu geben, ist keine qualitativ hochwertige Antwort. Kopieren und Einfügen von Zeichenfolgen aus dem Internet ist nicht das, was ein professioneller Systemadministrator tut. Erkläre es, was es macht und warum. - peterh


Ich benutze Apache 2.4.9 und füge den folgenden Code zur httpd-ssl.conf hinzu

SSLProxyProtokoll + SSLv3 + TLSv1 + TLSv1.1

Ich habe die Probleme gelöst


-2
2017-12-13 17:59



Schon mal davon gehört PUDEL? SSLv3 sollte deaktiviert sein. - Sven♦
SSLv3 ist anfällig - insider