Как я могу настроить различные SSL-сертификаты для Vhosts на Apache? - PullRequest
8 голосов
/ 09 ноября 2008

У меня есть веб-сервер, который обслуживает разные доменные имена, но имеет только один назначенный IP-адрес. Это прекрасно работает с виртуальными хостами в Apache. Теперь я хочу SSL-зашифрованные соединения для сайтов. Как установить разные SSL-сертификаты для разных хостов?

Использование разных IP-адресов для разных имен хостов было бы решением - не очень элегантным, но возможным. Но я хочу знать, как я могу использовать разные SSL-сертификаты для разных хостов. Поэтому я ищу решение только с одним IP-адресом.

Ответы [ 6 ]

8 голосов
/ 09 ноября 2008

ОБНОВЛЕНИЕ: 2013

Похоже, что SNI наконец начинает укрепляться, поскольку старые браузеры отпадают. Вот документы для Apache SNI , а вот статья в Википедии о SNI , которая включает диаграмму для браузеров, которые ее поддерживают. Короче говоря, все основные браузеры поддерживают его в поддерживаемых версиях; если важна поддержка старых браузеров, возможно, вам придется принять это во внимание.

------ предыдущий ответ ------------

Хосты SSL должны быть привязаны к уникальной комбинации IP-адрес / порт, поэтому вы не можете использовать виртуальный хостинг (или, по крайней мере, он может иметь только один хост ssl на IP-адрес). Это связано с тем, что https начинает шифрование до того, как параметр Host: отправляется в http, и поэтому он не может определить, какой шифр использовать из имени хоста - все, что у него есть, - это IP-адрес.

Это было бы глупо легко исправить, если бы в HTTP была команда TLS, поэтому он мог запустить SSL после запроса имени хоста, но никто не спросил меня.

Окончательный ответ см. http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts2

4 голосов
/ 09 ноября 2008

После подсказок в ответах и ​​комментариях к ним (особенно Мартина против Лёвиса) я немного погуглил и нашел этот сайт о RFC 2817 и RFC 3546 . RFC 3546 кажется хорошим решением.

2 голосов
/ 09 ноября 2008

AFAIK Невозможно установить разные SSL-сертификаты для виртуальных хостов на основе имен, используя mod_ssl. Вы можете прочитать подробную причину здесь . Альтернативой может быть использование виртуальных хостов на основе IP (что, вероятно, невозможно / не очень удачное решение) - просто вставьте различные директивы SSLCertificateFile, или вы можете попробовать этот метод, используя mod_gnutls.

1 голос
/ 13 февраля 2013

Наконец-то это возможно! Для поддержки индикации имени сервера (SNI) требуется как сервер, так и клиент

Браузеры, поддерживающие SNI:

  • Mozilla Firefox 2.0 или более поздняя версия
  • Opera 8.0 или более поздняя версия (с включенным TLS 1.1)
  • Internet Explorer 7.0 или более поздней версии (в Vista, а не XP)
  • Google Chrome
  • Safari 3.2.1 в Mac OS X 10.5.6

В этом документе показано, как настроить сервер: SSL с виртуальными хостами с использованием SNI

1 голос
/ 10 ноября 2008

Хотя все упомянутое DGM является правдой, были предприняты некоторые попытки обойти требование об уникальном IP-адресе для каждого сертификата, включая mod_gnutls и использование TLS-расширений . Есть некоторые недостатки, но они могут быть приемлемы для вас.

1 голос
/ 10 ноября 2008

Вам понадобится отдельная комбинация IP: порт для каждого vhost.

RFC 3546 еще не выполнимо. IE поддерживает его только при работе под Vista, и в последний раз я проверял, что Safari тоже не справляется.

...