Я використовую сервер apache (2.4), налаштований як балансир навантаження перед двома серверами apache. Він прекрасно працює, коли я використовую http-з'єднання між завантажувачем і резервними програмами, однак використання https не працює. Конфігурація балансира навантаження:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
<Proxy balancer://testcluster>
BalancerMember https://[Backend1]:443/test
BalancerMember https://[Backend2]:443/test
</Proxy>
ProxyPass /test balancer://testcluster
На сьогоднішній день пакети мають лише самопідписані сертифікати, тому перевірка сертифікатів вимкнена.
Журнал помилок на вантажі балансира містить наступне:
[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 [...] ()
Сторінка помилок у браузері містить:
Proxy Error
The proxy server could not handle the request GET /test/test.jsp.
Reason: Error during SSL Handshake with remote server
Як я вже говорив вище, зміна конфігурації на протокол http і порт 80 працює. Також є https-з'єднання між клієнтом і балансиром роботи, тому модуль ssl навантажувача, здається, налаштований належним чином. Підключення безпосередньо до бекенда через https також не призводить до помилок.
Заздалегідь дякую за ваш час
Редагувати: я зрозумів, проблема полягає в тому, що загальна назва моїх сертифікатів не відповідає імені сервера. Я думав, що SSLProxyVerify none не призведе до ігнорування цієї невідповідності, але це не так. До апаш- версії 2.4.5 цю перевірку можна відключити за допомогою SSLProxyCheckPeerCN вимкнено, але для версій версії (я використовую 2.4.7) SSLProxyCheckPeerName також потрібно вказати.
Документація Apache для sslproxycheckpeername
Робоча конфігурація виглядає приблизно так:
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
На жаль, я не можу відповісти на власне запитання через відсутність репутації, тому я відредагував своє запитання, сподіваюся, це допоможе тому, хто стикається з подібною проблемою