Веб-сервер apache использует указание имени сервера (SNI) для определения виртуального хоста (vhost) и, вместе с тем, сертификата безопасности транспортного уровня (TLS) для ответа на рукопожатие TLS.
Сертификат используется для ответа обязательный содержать любое допустимое имя, запрошенное с расширением SNI для расширенного клиента hello? Я не смог найти для этого ни одного стандарта запроса комментариев (RFC). Только это расширение используется для Выбрать сертификат для ответа:
Сервер, который принимает приветствие клиента, содержащее расширение server_name, МОЖЕТ использовать информацию, содержащуюся в расширении, для выбора подходящего сертификата для возврата клиенту и / или других аспектов политики безопасности. (https://tools.ietf.org/html/rfc3546#section-3.1)
(Это, очевидно, требуется, когда apache является веб-сервером, который завершает исходный запрос. Но что, если он должен ответить на прокси-запрос?)
Подробный пример:
браузер -> example.com (управление доступом / завершение TLS) -> gw-example.com -> internal-backend-application-7 (все соединения с TLS)
Пользователь / браузер запрашивает подключение TLS к https://example.com/application7
Существует прокси-сервер управления доступом, который пересылает запрос (после проверки необходимого файла cookie) на шлюз apache, который прослушивает https://gw-example.com
Запрос попадает на сервер apache gw-example.com через соединение TLS, но передается исходное имя SNI для example.com. Если шлюз apache не имеет записи для example.com, он не ответит правильным сертификатом (да, он будет использовать vhost по умолчанию, но предположим, что я не хочу принимать решение, которое полагается на этот резерв)
Далее этот запрос перенаправляется в соответствующее внутреннее приложение (в зависимости от пути контекста или поддоменов), и этот запрос должен иметь исходные заголовки.
Еще один вопрос для заголовка хоста, должно ли оно совпадать с SNI?