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