Utilizzo di Https tra Apache Loadbalancer e back-end


30

Sto usando un server Apache (2.4) configurato come bilanciamento del carico di fronte a 2 server Apache. Funziona bene quando uso connessioni http tra loadbalancer e backend, tuttavia l'utilizzo di https non funziona. La configurazione del bilanciamento del carico:

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

I backend hanno solo certificati autofirmati per ora, motivo per cui la verifica del certificato è disabilitata.

Il log degli errori sul bilanciamento del carico contiene quanto segue:

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

La pagina di errore nel browser contiene:

Proxy Error

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

Come ho già detto sopra, la modifica della configurazione con il protocollo http e la porta 80 funziona. Anche le connessioni https tra client e loadbalancer funzionano, quindi il modulo ssl di loadbalancer sembra essere configurato correttamente. Anche la connessione diretta al back-end tramite https non produce errori.

Grazie in anticipo per il tuo tempo


Modifica: l'ho capito, il problema è che il nome comune dei miei certificati non corrisponde al nome del server. Pensavo che SSLProxyVerify nessuno avrebbe fatto ignorare questa discrepanza, ma non è così. Prima di apache 2.4.5 questo controllo può essere disabilitato usando SSLProxyCheckPeerCN spento ma su versioni superiori (sto usando 2.4.7) SSLProxyCheckPeerName deve anche essere specificato.

Documentazione Apache per sslproxycheckpeername

La configurazione di lavoro è simile alla seguente:

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

Sfortunatamente non posso rispondere alla mia domanda per mancanza di reputazione, quindi ho modificato la mia domanda, spero che questo possa aiutare chiunque incontri un problema simile


Interessante. Lo facevo con apache2.2 e non ho mai dovuto SSLProxyVerificare nessuno e non ho mai avuto problemi con i certificati di auto-firma. Sei sicuro che il server back-end vada bene.
ETL

@ETL Non so se "SSLProxyVerify none" sia richiesto o meno, ho appena aggiunto che nella speranza che possa risolvere il problema. La chiamata di "wget ​​https: // [backend1] /test/test.jsp --no-check-certificate" sul server di bilanciamento del carico scarica il file previsto. ng
user3240383

Risposte:


16

Il problema si è rivelato essere che il nome comune dei certificati non corrispondeva al nome del server.

Prima di Apache 2.4.5 questo controllo può essere disabilitato usando SSLProxyCheckPeerCN offma è necessario specificare anche su versioni successive (come 2.4.7) SSLProxyCheckPeerName off.

Documentazione Apache per SSLProxyCheckPeerName

La configurazione di lavoro è simile alla seguente:

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

Puoi controllare la versione di Apache che hai con:

apachectrl -V

Ehi, ho lo stesso identico problema, tranne per il fatto che la configurazione è leggermente diversa: le <Location /margin-tool> ProxyPass https://xxxx.thoughtworks.net:8443/margin-tool ProxyPassReverse https://xxxx.thoughtworks.net:8443/margin-tool </Location>stesse impostazioni non funzionano. Qualche idea?
user157735

0

L'aggiunta di seguito ha risolto il problema

SSLProxyProtocol +TLSv1

5
Dare esempi di configurazione mistica non è una risposta di buona qualità. Copia le stringhe da Internet non è ciò che fa un amministratore di sistema professionale. Spiegalo, cosa fa e perché.
Peter dice di reintegrare Monica il

mi sono imbattuto in questo con java12 - tra l'altro, questo ha risolto il mio problema ....
womd

-2

uso apache 2.4.9 e aggiungo a httpd-ssl.conf il seguente codice

SSLProxyProtocol + SSLv3 + TLSv1 + TLSv1.1

ho risolto i problemi


3
Hai mai sentito parlare di POODLE ? SSLv3 dovrebbe essere disabilitato.
Sven

2
SSLv3 è vulnerabile
insider
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.