Можно ли игнорировать сертификат прокси-сервера Apache

Для справочной информации: (вопрос внизу)

Я пытаюсь подключиться к клиенту, у которого есть 8 серверов, все из которых имеют уникальные IP-адреса. Клиент использует тот же SSL-сертификат на всех серверах (для этого примера - имя сертификата == www.all_servers.com). Клиент разрешает только входящие запросы по https.

Я пытаюсь создать прокси-сервер apache с помощью mod_proxy, который отображает различные сопоставления URI на разные серверы. Например:

https://PROXY_SERVER/SERVER1/{REQUEST}

Это отправит {ЗАПРОС} на server1

https://PROXY_SERVER/SERVER2/{REQUEST}

отправит {ЗАПРОС} на сервер2. До сих пор довольно просто.

В Apache 2.2 это может быть достигнуто с использованием IP-адресов:

SSLProxyEngine On

ProxyPass /server1 https://1.1.1.1/
ProxyPassReverse /server1 https://1.1.1.1/

ProxyPass /server2 https://1.1.1.2/
ProxyPassReverse /server2 https://1.1.1.2/

Это произошло из-за того, что Apache 2.2 не проверял соответствие сертификата (1.1.1.1!= www.all_servers.com)

Однако в Apache 2.4 у меня теперь возникают проблемы с сертификатами (правильно). (Этот точный код работает в блоке apache 2.2)

[Thu Oct 10 12:01:48.571246 2013] [proxy:error] [pid 13282:tid 140475667224320] (502)Unknown error 502: [client 192.168.1.1:48967] AH01084: pass request body failed to 1.1.1.1:443 (1.1.1.1)
[Thu Oct 10 12:01:48.571341 2013] [proxy:error] [pid 13282:tid 140475667224320] [client 192.168.1.1:48967] AH00898: Error during SSL Handshake with remote server returned by /server1/asd
[Thu Oct 10 12:01:48.571354 2013] [proxy_http:error] [pid 13282:tid 140475667224320] [client 192.168.1.1:48967] AH01097: pass request body failed to 1.1.1.1:443 (1.1.1.1) from 192.168.1.1 ()

Я не могу использовать /etc/hosts, поскольку один сервер работал бы, используя:

1.1.1.1 www.all_servers.com

SSLProxyEngine On
ProxyPass /server1 https://www.all_servers.com/
ProxyPassReverse /server1 https://www.all_servers.com/

Но многие серверы не будут


Итак, к актуальному вопросу:

Есть ли способ заставить mod_proxy игнорировать сертификаты совпадения ошибок. Или, есть лучший способ сделать это.

Спасибо за любую помощь в этом!

Ответы

Ответ 1

Вы можете установить параметры SSLProxy* на вашем сервере Apache (который является клиентом в отношении обратных прокси-соединений).

Это было сделано с помощью SSLProxyCheckPeerCN (отключено по умолчанию в 2.2, но по умолчанию в 2.4), но я не уверен, как это будет работать с IP-адресами (поскольку IP-адреса в CN не стандарт). В Apache Httpd 2.4 есть новая опция для проверки SAN (SSLProxyCheckPeerName), но я не уверен, как она ведет себя и для IP-адресов.

Наличие IP-адресов в расширениях DNS SAN или в CN не соответствует стандарту HTTPS:

Если присутствует расширение subjectAltName типа dNSName, это ДОЛЖНО использоваться как идентификатор. В противном случае (наиболее конкретный) Common Поле "Имя" в поле "Тема" сертификата ДОЛЖНО использоваться. Хотя использование Common Name - это существующая практика, устаревшие и сертифицирующие органы поощряются к использованию dNSName.

[...]

В некоторых случаях URI указывается как IP-адрес, а не имя хоста. В этом случае должно присутствовать имя субъекта iPAddressAltName в сертификате и должен точно соответствовать IP в URI.