Jak wyłączyć dostęp https do określonych wirtualnych hostów?

10

W porządku, więc mam serwer Apache skonfigurowany zgodnie z następującymi dyrektywami:

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>

Tak więc example1.com ma obsługę SSL i można uzyskać do niego dostęp za pośrednictwem http: // example1.com lub https: // example1.com. Ma to jednak niezamierzony efekt uboczny: https: // przyklad1.com, kiedy odwiedzam https: // przyklad2.com w mojej przeglądarce. Chcę w zasadzie jakoś wyłączyć https: // przyklad2.com lub przekierować go na http: // przyklad2.com, aby nie wyświetlało się ostrzeżenie i niewłaściwa witryna podczas jej odwiedzania.

w pobliżu
źródło

Odpowiedzi:

7

Nie będziesz w stanie uniknąć ostrzeżenia, chyba że przykłady 1 i przykład 2 znajdują się na różnych adresach IP lub nie otrzymasz certyfikatu SSL obejmującego obie nazwy - strona błędu lub przekierowanie nie może nastąpić, dopóki nie zostanie nawiązane połączenie SSL.

To powiedziawszy, coś w tym stylu powinno działać:

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>
Shane Madden
źródło
Dzięki! Chyba brakowało mi dyrektywy NameVirtualHost, a Apache pomyślał, że próbuję zmusić dwa wirtualne hosty do konfliktu. Co ciekawe, Chrome nie wyświetla ostrzeżenia o tym przekierowaniu ... Ale nie martwię się o to, po prostu nie chcę, aby moja strona SSL wyświetlała się pod innymi nazwami domen.
pobliżu
Czy to nie to samo, co dodanie nieprawidłowych certyfikatów do kreacji zastępczej do non-ssl? Myślę, że możesz bezpośrednio dołączyć _fake do nazwy certyfikatów w dyrektywie vhost.
m3nda
0

nie sądzę, że powinieneś umieścić: 443 na ServerName example1.com:443

powinny być poprawnie skonfigurowane

<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
źródło
0

Aby to osiągnąć, musisz mieć nazwę serwera (SNI). Szczegółowe informacje znajdują się w linku: http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI .

Karthikeyan
źródło
1
Głosowałem za odrzuceniem, ponieważ nie podałeś odpowiedzi ani przykładu, tylko link (który nie gwarantuje, że będzie tam na stałe)
Chris Bloom