Помилка під час рукостискання SSL з віддаленим сервером


118

У мене 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

Apache не довіряє сертифікату, встановленому на Tomcat. Це самопідписаний cert? Або його виготовляє внутрішній офіс компанії?
МК.

2
Він підписаний за допомогою цієї команди: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
user2791481

3
serverfault.com/questions/356678/… Я думаю, що саме цього ви хочете: SSLProxyПеревірити відсутність SSLProxyCheckPeerCN off
MK.

9
Краще налаштувати SSLProxyCACertificateFileна ваш приватний сертифікат ЦС, а не просто вимикати перевірку.
ndbroadbent

як пояснено в цьому блозі, ви можете вимкнути перевірки SSL.
HybrisHelp

Відповіді:


266

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

У випадку Apache 2.4 і новіших версій існують різні типові параметри та нова директива.

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

SSLProxyEngine on
SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off

Таким чином, це вимикає захист, але поки трафік локальний (тобто 127.0.0.1:8443 ), це має бути менше проблем, правда?
bgStack15

5
Ну, це не відключає захист, оскільки це стосується шифрування. Трафік все ще зашифрований. Це просто вимикає перевірку сертифіката, щоб переконатися, що це довірений орган. Тож якщо ви довіряєте серверу, у вас не повинно виникнути проблем. Але так, для місцевого руху я думаю, що ви теж добре.
mydoghasworms

1
Дякую мідогамним глистам. Ваші директиви працюють у версії сервера: 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

Зіткнувся з тією ж проблемою, що і ОП:

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.