Як відключити доступ 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, щоб я не отримував попередження та неправильний сайт, коли відвідую його.

Відповіді:


7

Ви не зможете уникнути отримання попередження, якщо ви не знайдете приклад1 і 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-сайт відображався під іншими доменними іменами.
nearengine

Хіба не те, що додавати недійсні серти до резервного файлу до non-ssl? Я думаю, ви можете безпосередньо додати _fake до імені certs у вашій директиві vhost.
м3нда

0

я не думаю, що слід ставити: 443 на ServerName example1.com:243

це має бути правильна конфігурація

<VirtualHost example1.com:443> //change example1.com to ip address is a good habit
DocumentRoot /var/www/html
ServerName example1.com
SSLEngine on
...
</VirtualHosts>

0

Для цього потрібно мати індикацію імені сервера (SNI). Для отримання детальної інформації перейдіть за посиланням: http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI .


1
Вниз проголосували, тому що ви не надали відповіді чи прикладу, а лише посилання (яке не гарантовано буде постійно)
Кріс Блум
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.