Как отключить https доступ к конкретным виртуальным хостам?

10

Итак, у меня есть сервер Apache, настроенный со следующими директивами:

NameVirtualHost *:80

<VirtualHost *:80>  
ServerName example1.com  
ServerAlias www.example1.com  
DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
ServerName example2.com
ServerAlias *.example2.com
DocumentRoot /var/www/example2
</VirtualHost>

<VirtualHost example1.com:443>
DocumentRoot /var/www/html
ServerName example1.com:443
SSLEngine on
...
</VirtualHosts>

Таким образом, example1.com поддерживает SSL и может быть доступен через http: // example1.com или https: // example1.com. Однако это приводит к непреднамеренному побочному эффекту, связанному с отображением https: // example1.com при посещении https: // example2.com в моем браузере. Что я хочу сделать, так это отключить https: // example2.com или перенаправить его на http: // example2.com, чтобы я не получал предупреждение и неверный сайт при посещении.

nearengine
источник

Ответы:

7

Вы не сможете избежать получения предупреждения, если example1 и example2 находятся на разных IP-адресах или если вы получите SSL-сертификат, охватывающий оба имени - страница ошибки или перенаправление не могут появиться до тех пор, пока не будет установлено SSL-соединение.

При этом, что-то в этом роде должно работать:

NameVirtualHost *:443
<VirtualHost *:443>
  ServerName example1.com
  SSLEngine on
  #...
</VirtualHost>
<VirtualHost *:443>
  ServerName example2.com
  SSLEngine on
  # same certificate config here as on example1, unless you're wanting to use TLS SNI
  # then, let's redirect the user to non-SSL
  Redirect permanent / http://example2.com/
</VirtualHost>
Шейн Мэдден
источник
Спасибо! Я думаю, что мне не хватало директивы NameVirtualHost, и Apache решил, что я пытаюсь создать два виртуальных хоста, конфликтующих друг с другом. Интересно, что Chrome не выдает предупреждение об этом перенаправлении ... Но я не беспокоюсь об этом, просто не хочу, чтобы мой сайт SSL появлялся под другими доменными именами.
ближайший день
Разве это не то же самое, что добавить недействительные сертификаты в качестве альтернативы non-ssl? Я полагаю, вы можете напрямую добавить _fake к имени сертификата в директиве vhost.
m3nda
0

я не думаю, что вы должны поставить: 443 на ServerName example1.com:443

это должно быть правильно настроить

<VirtualHost example1.com:443> //change example1.com to ip address is a good habit
DocumentRoot /var/www/html
ServerName example1.com
SSLEngine on
...
</VirtualHosts>
tywtyw2002
источник
0

Для этого вам нужна индикация имени сервера (SNI). Пожалуйста, обратитесь по ссылке: http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI для получения подробной информации.

Картикеян
источник
1
Отказался, потому что вы не предоставили ответ или пример, только ссылку (которая не гарантированно будет там постоянно)
Крис Блум,