Назад | Перейти на главную страницу

Два виртуальных хоста SSL на одном IP-адресе с Apache

У меня есть сервер apache с одним IP-адресом. (на сервере debian).

У меня есть несколько виртуальных хостов для http и один виртуальный хост для https

один виртуальный хост, перенаправьте трафик на виртуальный хост https, и это отлично работает, примерно так

<VirtualHost *:80>
ServerName mymainsite.com
ServerAlias www.mymainsite.com
ServerAlias myothersite.org
ServerAlias www.myothersite.org
    RewriteEngine on
    RewriteRule ^(.*)$ https://www.mymainsite.com$1 [L,R=301]
(...)

У меня есть еще один vhost для https, вот так

<VirtualHost *:443>
ServerName www.mymainsite.com
(...)

и это работает нормально, все не https перенаправляются на https, и это супер ... но тогда проблема.

иногда люди переходят на этот URL https://www.myothersite.org

и на это отвечает https vhost, что создает ошибку «неправильный сертификат».

Вопрос: есть ли способ предотвратить это, не используя второй IP-адрес или покупая SSL-сертификат с несколькими URL-адресами или подстановочными знаками?

изменить: просто удалите лишний текст

Вам необходимо использовать расширение SSL с именем Индикация имени сервера (SNI). Это расширение позволит серверу определить, для какого именованного виртуального хоста был предназначен запрос, и исправить его соответствующим образом.

Ваш apache, вероятно, построен с поддержкой SNI, но для проверки просто настройте два виртуальных хоста с именами на своем IP-адресе, порт 443 и попробуйте запустить apache. Если ваш apache не поддерживает SNI, error_log покажет: «Не следует использовать виртуальные хосты на основе имен вместе с SSL !!» Если SNI встроен, в журнале ошибок будет отображаться «[предупреждение] Инициализация: виртуальные хосты SSL на основе имени работают только для клиентов с поддержкой указания имени сервера TLS (RFC 4366)».

Также имейте в виду, что браузеры также должны поддерживать SNI, чтобы это работало. Хорошо, что все основные браузеры поддерживают

  • Mozilla Firefox 2.0 или новее
  • Opera 8.0 или новее (с включенным TLS 1.1)
  • Internet Explorer 7.0 или новее (в Vista, а не XP)
  • Гугл Хром
  • Safari 3.2.1 в Mac OS X 10.5.6

Итак, да, короче говоря, у вас может быть 2 или более разных домена с соответствующими сертификатами SSL на одном IP-адресе, просто настройте другие домены SSL так же, как ваш первый. Если ваш apache не поддерживает SNI, вам нужно будет найти другой пакет apache или перестроить его с поддержкой SNI, чтобы заставить его работать.