fragen stichworte

Stoppen Sie die Standard-SSL-Antwort für Shared IP mit SNI

Vorher habe ich hier eine Frage gestellt: Einzeldomänen-SSL für alle Domänen unter Shared IP zum Einrichten sicherer und nicht sicherer Domänen auf einer einzelnen IP-Adresse.

Die Meinungen waren gemischt, aber SNI scheint die Lösung zu sein. Ich bekomme es leider nicht wie gewünscht.

Ich möchte, dass mein Server nur das Zertifikat für domaina.com und keine anderen Hostnamen sendet, auch wenn dies bedeutet, dass ein Fehler 403 an Nicht-SNI-Clients gesendet wird. Meine aktuelle Konfiguration für Vanilla Ubuntu Server 12.04 LTS ist unten:

Ports.conf

…
<IfModule mod_ssl.c>
    NameVirtualHost *:443
    Listen 443
</IfModule>
…

Domain A Virtueller Host

<VirtualHost *:80>
    ServerName   domaina.com
    ServerAlias  www.domaina.com
    DocumentRoot/var/www/domaina.com/public
    ErrorLog    /var/www/domaina.com/logs/error.log
    CustomLog   /var/www/domaina.com/logs/access.log combined
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName   domaina.com
    ServerAlias  www.domaina.com
    DocumentRoot/var/www/domaina.com/public
    SSLEngine on
    SSLCertificateFile     /etc/apache2/ssl/domaina.com.crt
    SSLCertificateKeyFile  /etc/apache2/ssl/domaina.key
    SSLCertificateChainFile/etc/apache2/ssl/domaina.com.ca-bundle
</VirtualHost>
</IfModule>

Virtueller Host für Domäne B

<VirtualHost *:80>
    ServerName   domainb.com
    ServerAlias  www.domainb.com
    DocumentRoot/var/www/domainb.com/public
    ErrorLog    /var/www/domainb.com/logs/error.log
    CustomLog   /var/www/domainb.com/logs/access.log combined
</VirtualHost>

apache2ctl -S

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:443                  is a NameVirtualHost
         default server domaina.com (/etc/apache2/sites-enabled/domaina.com:12)
         port 443 namevhost domaina.com (/etc/apache2/sites-enabled/domaina.com:12)
*:80                   is a NameVirtualHost
         default server domaina.com (/etc/apache2/sites-enabled/domaina.com:3)
         port 80 namevhost domaina.com (/etc/apache2/sites-enabled/domaina.com:3)
         port 80 namevhost domainb.com (/etc/apache2/sites-enabled/domainb.com:1)
Syntax OK

Wie können Sie die Standardeinstellungen entfernen?

antworten

Sie können buchstäblich nicht tun, was Sie fragen, während Sie beide Domains auf der gleichen IP-Adresse halten.

Wie es jetzt ist, haben Sie beide Domains (domaina.com und domaineb.com) auf der gleichen IP-Adresse. Dann haben Sie Port 80 für HTTP und Port 443 für HTTPS geöffnet. Wie Sie bemerkt haben, ist der Port für alle Domains auf dem Server offen; Es kann nicht für nur eine Domäne geschlossen werden, während es für andere offen bleibt.

Wenn Sie nicht möchten, dass SSL überhaupt für domainb.com geöffnet ist, müssen Sie domainb.com auf eine separate IP-Adresse setzen.

Alternativ können Sie auch .htaccess verwenden, um Anfragen entsprechend umzuleiten. Nicht die beste Lösung, aber wenn Sie eine einzelne IP verwenden müssen, könnte das für Sie funktionieren.

Also, domaina.com's .htaccess könnte etwas wie

haben  
#redirect domainb https requests
RewriteCond %{HTTP_HOST} ^domainb.com$
RewriteRule ^(.*)$ http://domainb.com%{REQUEST_URI} [L,R=301]