Выбор SSL-сертификата на основе host-header: возможно ли это?

17

Возможно ли, чтобы веб-сервер выбирал сертификат SSL для использования на основе заголовка узла входящего соединения или эта информация доступна только после установления соединения SSL?

То есть, может ли мой веб-сервер отображаться на порту 443 и использовать сертификат foo.com, если запрошен https://foo.com , и сертификат bar.com, если запрошен https://bar.com, или я пытаюсь это сделать что-то невозможное, потому что сервер должен установить соединение SSL, прежде чем он знает, чего хочет клиент?

DrStalker
источник

Ответы:

23

Исторически ваше первое утверждение верно. Теперь есть несколько вариантов:

  • Подстановочный сертификат, если субдомены находятся в одном домене.
  • Сертификат SAN / UCC для указания альтернативных имен для сертификата, что позволяет обслуживать несколько сертификатов.
  • SNI был введен для установления SSL-соединения после заголовка Host. Это имеет ограниченную поддержку, однако, поскольку оно более новое.

На ServerFault мне много раз отвечали и я, и другие. Я бы посоветовал поискать дополнительную информацию, если у вас нет конкретного вопроса.

сигнализатор
источник
4
Я пошел искать и ничего не мог найти; Вероятно, это одна из тех вещей, которые легко найти, если вы знаете ответ, и можете включить его в условия поиска. Благодарю.
DrStalker
3
Если на ServerFault есть ответы, было бы неплохо добавить ссылки на них.
Organicveggie
serverfault.com/search , @organicveggie.
Уорнер
3
SNI не устанавливает соединение SSL после заголовка узла, но включает имя узла в рукопожатие SSL. Не то, чтобы это имело значение, если вы не разработчик SSL.
Барт ван Хейкелом
Поиск Serverfault дает это в качестве ответа. Это означает, что канонически любые другие вопросы являются дубликатами этого. Эта ссылка, которую вы включили, не имеет результатов.
Ян Бойд
5

Чтобы расширить ответ Warner: Страница CAcert Vhost Task Force сравнивает несколько методов использования нескольких доменов на одном сервере. Я лично использую указание имени сервера .

user1686
источник
Как вы справляетесь с пользователями Windows XP, Android, Blackberry и т. Д.?
Томасруттер
3

Краткий ответ: нет

HTTP инкапсулирован в SSL , поэтому любая информация о запросе будет недоступна, пока не будет установлено соединение. Следовательно, пока сертификат не был предоставлен клиенту. Нет способа использовать заголовки или любую другую зашифрованную информацию, так как они по-прежнему недоступны.

РЕДАКТИРОВАТЬ: это правда, если вы хотите в настоящее время быть кросс-браузер и полностью переносимым. По словам других, есть несколько новых методов, которые делают это возможным в ближайшем будущем.

drAlberT
источник
1

или эта информация доступна только после установления SSL-соединения?

Верный. Соединение SSL устанавливается перед отправкой любой части HTTP-запроса (включая заголовок узла).

Ричард
источник
2
Это уже не совсем точно.
Warner