Wie deaktiviere ich den https-Zugriff auf bestimmte virtuelle Hosts?

10

Okay, ich habe einen Apache-Server mit den folgenden Anweisungen eingerichtet:

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>

Beispiel1.com unterstützt SSL und kann entweder über http: // example1.com oder https: // example1.com aufgerufen werden. Dies hat jedoch den unbeabsichtigten Nebeneffekt, dass https: // example1.com angezeigt wird, wenn ich https: // example2.com in meinem Browser besuche. Grundsätzlich möchte ich https: // example2.com irgendwie deaktivieren oder auf http: // example2.com umleiten, damit ich beim Besuch keine Warnung und keine falsche Site erhalte.

Nearengine
quelle

Antworten:

7

Sie können eine Warnung nicht vermeiden, es sei denn, Beispiel1 und Beispiel2 haben unterschiedliche IP-Adressen oder Sie erhalten ein SSL-Zertifikat für beide Namen. Eine Fehlerseite oder Umleitung kann erst nach dem Herstellen der SSL-Verbindung erfolgen.

Davon abgesehen sollte etwas in dieser Richtung funktionieren:

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
quelle
Vielen Dank! Ich glaube, ich habe die NameVirtualHost-Direktive vermisst und Apache dachte, ich habe versucht, zwei virtuelle Hosts in Konflikt miteinander zu bringen. Interessanterweise warnt Chrome nicht vor dieser Weiterleitung ... Aber ich mache mir darüber keine Sorgen, möchte nur nicht, dass meine SSL-Site unter anderen Domainnamen angezeigt wird.
Nearengine
Ist das nicht dasselbe, als ungültige Zertifikate zum Fallback auf Nicht-SSL hinzuzufügen? Ich denke, Sie können _fake direkt an den Namen der Zertifikate in Ihrer vhost-Direktive anhängen.
m3nda
0

Ich denke nicht, dass Sie: 443 auf ServerName example1.com:443 setzen sollten

Diese sollten richtig konfiguriert sein

<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
quelle
0

Dazu benötigen Sie eine SNI (Server Name Indication). Weitere Informationen finden Sie unter folgendem Link: http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI .

Karthikeyan
quelle
1
Abgestimmt, weil Sie keine Antwort oder ein Beispiel angegeben haben, nur einen Link (der garantiert nicht dauerhaft vorhanden ist)
Chris Bloom