Добавить сертификат клиента при работе в качестве обратного прокси

У меня в основном та же проблема, что и у Добавить сертификат клиента при работе в качестве обратного прокси (Apache / NGINX) , но в моем случае нет nginx, который может помогите мне.

Я хочу, чтобы определенное место внутри моего виртуального хоста действовало как обратный прокси для стороннего сервера, например

<Location /mylocation/>
        ProxyPass          https://thirdparty.example:2345/foo/
        ProxyPassReverse   https://thirdparty.example:2345/foo/
</Location>

https: //thirdparty.example: 2345 / foo / , но требует аутентификации с сертификатом клиента. Я хочу скрыть этот факт от своих пользователей. От них не должно требоваться предоставление сертификата клиента. Вместо этого я хотел бы, чтобы Apache использовал сертификат, который хранится на сервере.

Как это можно сделать?

1
задан 7 April 2019 в 05:46
1 ответ

Когда Apache настроен как прокси, существует 2 отдельных HTTP (S) подключения:

  • одно от HTTP-клиента к вашему Apache
  • одно от вашего Apache к какому-либо другому серверу

У клиента первого соединения нет прямого способа узнать, что ваш Apache работает как прокси, и где именно он соединяется. Оба соединения сосуществуют более или менее одновременно. Это полная противоположность перенаправлению HTTP, когда клиент получает новый URL и, следовательно, фактически выполняет 2 соединения, но одно за другим.

Следовательно:

Я хочу скрыть этот факт от моих пользователей.

Это подразумевается при использовании Apache в качестве прокси.

От них не требуется предоставлять сертификат клиента.

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

Вместо этого я хотел бы, чтобы Apache использовал сертификат, который хранится на сервере.

Все, что связано с TLS, находится под контролем mod_ssl , документация которого находится на http://httpd.apache.org/docs/2.4/mod/mod_ssl.html

Вас больше всего заинтересует SSLProxyMachineCertificateFile и его окружение, как это описано таким образом:

 This directive sets the all-in-one file where you keep the certificates and keys used for authentication of the proxy server to remote servers. 

Обратите внимание на контексты, в которых он может появляться: глобальный сервер, виртуальный хост или директива прокси (следовательно, вы не можете поместить его прямо в свой блок Location ).

Таким образом, вам нужно будет добавить что-то вроде:

<Proxy "https://thirdparty.example:2345/foo/*">
  SSLProxyMachineCertificateFile /some/path
</Proxy>
0
ответ дан 4 December 2019 в 03:06

Теги

Похожие вопросы