Błąd podczas uzgadniania SSL ze zdalnym serwerem

119

Mam Apache2(nasłuchiwanie na 443) i aplikację internetową działającą Tomcat7(nasłuchiwanie na 8443) na Ubuntu.

Ustawiłem apache2 jako odwrotne proxy, aby uzyskać dostęp do aplikacji internetowej przez port 443 zamiast 8443. Poza tym muszę mieć komunikację SSL nie tylko między przeglądarką a apache2, ale także między apache2 i tomcat7, dlatego ustawiam SSL zarówno na apache2, jak i tomcat7 . Jeśli spróbuję uzyskać dostęp do aplikacji internetowej, kontaktując się bezpośrednio z tomcat7, wszystko jest w porządku. Problem polega na tym, że kiedy próbuję uzyskać dostęp do aplikacji internetowej tomcata przez apache2 (odwrotne proxy), w przeglądarce pojawia się błąd:

Proxy Error
The proxy server could not handle the request GET /web_app.
Reason: Error during SSL Handshake with remote server
user2791481
źródło
Apache nie potwierdza prawdziwości certyfikatu zainstalowanego na tomcat. Czy jest to certyfikat z podpisem własnym? A może jest wykonywany przez wewnętrzny CA?
MK.
2
Jest podpisany samodzielnie za pomocą tego polecenia: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
user2791481
3
serverfault.com/questions/356678/… Myślę, że tego właśnie chcesz: SSLProxyVerify brak SSLProxyCheckPeerCN wyłączony
MK.
9
Lepiej ustawić SSLProxyCACertificateFilena swój prywatny certyfikat CA, zamiast po prostu wyłączać weryfikację.
ndbroadbent
jak wyjaśniono na tym blogu , możesz wyłączyć sprawdzanie SSL.
HybrisHelp

Odpowiedzi:

267

Komentarz MK wskazał mi właściwy kierunek.

W przypadku Apache 2.4 i nowszych są różne ustawienia domyślne i nowa dyrektywa.

Używam Apache 2.4.6 i musiałem dodać następujące dyrektywy, aby działał:

SSLProxyEngine on
SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
mydoghasworms
źródło
To wyłącza ochronę, ale dopóki ruch jest lokalny (tj. 127.0.0.1:8443 ), nie powinno to stanowić problemu, prawda?
bgStack15
5
Cóż, nie wyłącza ochrony, jeśli chodzi o szyfrowanie. Ruch jest nadal szyfrowany. To po prostu wyłącza sprawdzanie certyfikatu, aby upewnić się, że jest to zaufany organ. Jeśli więc ufasz serwerowi, nie powinieneś mieć problemu. Ale tak, dla ruchu lokalnego myślę, że ty też jesteś w porządku.
mydoghasworms
1
Dzięki mydoghasworms. Twoje dyrektywy działają w wersji serwerowej: Apache / 2.4.6. Jeśli ktoś potrzebuje znać wersję httpd, użyj tego: httpd -V
JRichardsz
3

Mam 2 serwery skonfigurowane na dockerze, odwrotnym proxy i serwerze internetowym. Ten błąd zaczął się nagle pojawiać we wszystkich moich witrynach internetowych po 1 roku. Podczas wcześniejszej konfiguracji wygenerowałem certyfikat z podpisem własnym na serwerze sieciowym.

Musiałem więc ponownie wygenerować certyfikat SSL i zaczął działać ...

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

Rehmat
źródło
1

Napotkał ten sam problem co OP:

  • Tomcat zwrócił odpowiedź podczas uzyskiwania dostępu bezpośrednio przez interfejs SOAP
  • Nie załadowano plików html
  • Gdy używane są właściwości Apache wymienione w poprzedniej odpowiedzi, pojawiła się strona internetowa, ale AngularJS nie mógł uzyskać odpowiedzi HTTP

Certyfikat SSL Tomcat wygasł, a przeglądarka pokazała go jako bezpieczny - certyfikat Apache był daleki od wygaśnięcia. Aktualizacja pliku Tomcat KeyStore rozwiązała problem.

Tak jak
źródło