Errore durante l'handshake SSL con il server remoto


118

Ho Apache2(ascolto su 443) e un'app Web in esecuzione Tomcat7(ascolto su 8443) su Ubuntu.

Ho impostato apache2 come proxy inverso in modo da accedere all'app Web tramite la porta 443 anziché 8443. Inoltre, devo avere una comunicazione SSL non solo tra browser e apache2 ma anche tra apache2 e tomcat7, quindi ho impostato SSL sia su apache2 che su tomcat7 . Se provo ad accedere alla web app contattando direttamente tomcat7, va tutto bene. Il problema è che quando provo ad accedere alla web app di Tomcat tramite apache2 (reverse proxy), sul browser compare l'errore:

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

Apache non è fedele al certificato che hai installato su Tomcat. È un certificato autofirmato? O è prodotto da una CA interna?
MK.

2
È auto firmato con questo comando: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
user2791481

3
serverfault.com/questions/356678/… Penso che questo sia quello che vuoi: SSLProxyVerify nessuno SSLProxyCheckPeerCN off
MK.

9
È meglio impostare SSLProxyCACertificateFileil certificato CA privato, invece di disattivare semplicemente la verifica.
ndbroadbent

come spiegato in questo blog puoi disattivare i controlli SSL.
HybrisHelp

Risposte:


266

Il commento di MK mi ha indirizzato nella giusta direzione.

Nel caso di Apache 2.4 e versioni successive, ci sono diversi valori predefiniti e una nuova direttiva.

Sto eseguendo Apache 2.4.6 e ho dovuto aggiungere le seguenti direttive per farlo funzionare:

SSLProxyEngine on
SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off

Quindi questo disattiva la protezione, ma fintanto che il traffico è locale (cioè 127.0.0.1:8443 ) dovrebbe essere un problema minore, giusto?
bgStack15

5
Bene, non disattiva la protezione in quanto è interessata la crittografia. Il traffico è ancora crittografato. Questo disabilita semplicemente il controllo del certificato per assicurarsi che sia da parte di un'autorità fidata. Quindi, se ti fidi del server, non dovresti avere problemi. Ma sì, per il traffico locale penso che tu stia bene anche tu.
mydoghasworms

1
Grazie mydoghasworms. Le tue direttive funzionano nella versione Server: Apache / 2.4.6 Se qualcuno ha bisogno di conoscere la versione di httpd, usa questo: httpd -V
JRichardsz

3

Ho 2 server configurati su docker, proxy inverso e server web. Questo errore ha iniziato a verificarsi per tutti i miei siti Web all'improvviso dopo 1 anno. Durante la configurazione precedente, ho generato un certificato autofirmato sul server web.

Quindi, ho dovuto generare di nuovo il certificato SSL e ha iniziato a funzionare ...

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ssl.key -out ssl.crt


1

Ha affrontato lo stesso problema di OP:

  • Tomcat ha restituito una risposta quando si accede direttamente tramite l'interfaccia utente SOAP
  • Non ha caricato i file html
  • Quando si utilizzavano le proprietà di Apache menzionate nella risposta precedente, appariva la pagina web ma AngularJS non poteva ottenere la risposta HTTP

Il certificato SSL Tomcat era scaduto mentre un browser lo mostrava come sicuro: il certificato Apache era lontano dalla scadenza. L'aggiornamento del file Tomcat KeyStore ha risolto il problema.

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.