Ошибка во время установления связи SSL с удаленным сервером

119

У меня Apache2(слушаю 443) и Tomcat7работаю веб-приложение (слушаю 8443) Ubuntu.

Я установил apache2 в качестве обратного прокси-сервера, чтобы получить доступ к веб-приложению через порт 443 вместо 8443. Кроме того, мне нужно иметь SSL-соединение не только между браузером и apache2, но и между apache2 и tomcat7, поэтому я установил SSL как для apache2, так и для tomcat7. , Если я попытаюсь получить доступ к веб-приложению, напрямую связавшись с tomcat7, все будет в порядке. Проблема в том, что когда я пытаюсь получить доступ к веб-приложению tomcat через apache2 (обратный прокси), в браузере появляется ошибка:

Proxy Error
The proxy server could not handle the request GET /web_app.
Reason: Error during SSL Handshake with remote server
user2791481
источник
Apache не проверяет подлинность сертификата, который вы установили на tomcat. Это самоподписанный сертификат? Или это сделано в собственной CA?
МК.
2
Он самоподписан с помощью этой команды: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
user2791481
3
serverfault.com/questions/356678/… Думаю, это то, что вам нужно: SSLProxyVerify none SSLProxyCheckPeerCN off
МК.
9
Лучше установить SSLProxyCACertificateFileсвой частный сертификат CA, а не просто отключать проверку.
ndbroadbent 09
как объясняется в этом блоге, вы можете отключить проверку SSL.
HybrisHelp

Ответы:

267

Комментарий МК указал мне правильное направление.

В случае Apache 2.4 и выше существуют другие значения по умолчанию и новая директива.

Я использую Apache 2.4.6, и мне пришлось добавить следующие директивы, чтобы он заработал:

SSLProxyEngine on
SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
mydoghasworms
источник
Таким образом, это отключает защиту, но пока трафик является локальным (например, 127.0.0.1:8443 ), это не должно быть проблемой, верно?
bgStack15
5
Ну, это не отключает защиту в части шифрования. Трафик по-прежнему зашифрован. Это просто отключает проверку сертификата, чтобы убедиться, что это доверенный орган. Так что, если вы доверяете серверу, у вас не должно возникнуть проблем. Но да, для местного трафика я думаю, у вас тоже все в порядке.
mydoghasworms
1
Спасибо mydoghasworms. Ваши директивы работают в версии сервера: Apache / 2.4.6. Если кому-то нужно знать версию httpd, используйте это: httpd -V
JRichardsz
3

У меня есть 2 сервера на докере, обратный прокси и веб-сервер. Эта ошибка начала появляться на всех моих веб-сайтах внезапно через 1 год. При настройке ранее я сгенерировал самоподписанный сертификат на веб-сервере.

Итак, мне пришлось снова сгенерировать сертификат SSL, и он начал работать ...

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

Рехмат
источник
1

Столкнулся с той же проблемой, что и OP:

  • Tomcat вернул ответ при доступе напрямую через интерфейс SOAP
  • Не загружал html файлы
  • При использовании свойств Apache, упомянутых в предыдущем ответе, веб-страница появлялась, но AngularJS не мог получить HTTP-ответ.

Срок действия сертификата Tomcat SSL истек, в то время как браузер показал его как безопасный - срок действия сертификата Apache еще далек от истечения. Обновление файла Tomcat KeyStore решило проблему.

Как только
источник