SSL-Site verwendet nicht die richtige IP in Apache und Ubuntu

10

Ich versuche, einen Apache-Ubuntu-PHP-Webserver einzurichten. Mein Webserver hostet mehrere SSL-Sites. Jede SSL-Site hat ihre eigene IP-Adresse (es sei denn, es gibt einen besseren Weg, dies zu tun).

Ich nehme an, der erste Schritt besteht darin, Apache dazu zu bringen, mindestens zwei verschiedene IP-Adressen zu erkennen. Im Moment habe ich eine SSL- und eine Nicht-SSL-Version einer Website, die http://mysite.com und https://mysite.com lautet . Obwohl beide derzeit auf meinem Server ausgeführt werden, kann ich nicht beide dazu bringen, unterschiedliche IP-Adressen zu verwenden. Derzeit verwenden beide die IP 1.1.1.1. Ich habe eine zweite IP-Adresse 2.2.2.2 gekauft, aber https://mysite.com akzeptiert sie nicht und Firefox beschwert sich mit dem Fehler "ssl_error_rx_record_too_long". Hier ist ein Blick auf meine 2 vhost-Dateien

/ etc / apache2 / site-enabled / 000-default

#NameVirtualHost 1.1.1.1:80

#<VirtualHost 1.1.1.1:80>
<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

/etc/apache2/site-enabled/mysite.com

<VirtualHost 1.1.1.1:80>
     ServerAdmin [email protected]
     ServerName mysite.com
     ServerAlias www.mysite.com
     DocumentRoot /srv/www/mysite.com/public_html/
     ErrorLog /srv/www/mysite.com/logs/error.log
     CustomLog /srv/www/mysite.com/logs/access.log combined
</VirtualHost>
<IfModule mod_ssl.c>
#<VirtualHost 2.2.2.2:443>
<VirtualHost *:443>
     ServerAdmin [email protected]
     ServerName mysite.com
     ServerAlias www.mysite.com
     DocumentRoot /srv/www/mysite.com/public_html/
     ErrorLog /srv/www/mysite.com/logs/error.log
     CustomLog /srv/www/mysite.com/logs/access.log combined

        SSLEngine on

        SSLCertificateFile    /etc/ssl/localcerts/www.mysite.com.crt
        SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite.com.pem

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

        BrowserMatch ".*MSIE.*" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0

</VirtualHost>
</IfModule>

Wenn ich auf mysite.com <VirtualHost *: 443> durch <VirtualHost 2.2.2.2:443> ersetze, beschwert sich Firefox mit dem Fehler "ssl_error_rx_record_too_long".

Wenn ich also versuche, ein /etc/apache2/site-enabled/mysite2.com mit einem anderen SSL-Zertifikat auf einer dritten IP-Adresse zu erstellen und zu aktivieren, beschwert sich Apache über ein "Überlappungs" -Problem.

Kann mir jemand sagen, wie ich meinen Server aufrichte, damit ich mehrere SSL-Websites auf verschiedenen Domänen hosten kann? Ich möchte, dass das SSL-Zertifikat für IE 7+, FF und Safari unter den gängigen Betriebssystemen wie WinXP, Vista, Win7 und OSX funktioniert.

John
quelle

Antworten:

7

Ich habe dies auf meinen Servern aktiviert, indem ich die Datei /etc/apache2/ports.conf wie folgt angepasst habe:

<IfModule mod_ssl.c>
NameVirtualHost *:443
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    NameVirtualHost *:443
    Listen 443
</IfModule>

Sie sollten dann in der Lage sein, /etc/apache2/sites-enabled/mysite.com zu bearbeiten (einige Codes wurden weggelassen, um das Beispiel zu verkürzen):

<VirtualHost *:443>
     ServerName mysite1.com
     SSLCertificateFile    /etc/ssl/localcerts/www.mysite1.com.crt
     SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite1.com.pem
</VirtualHost>

<VirtualHost *:443>
    ServerName mysite2.com
    SSLCertificateFile    /etc/ssl/localcerts/www.mysite2.com.crt
    SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite2.com.pem
</VirtualHost>

Für so viele vhosts wie du willst.

Edit: BRAUCHEN SIE EINE ZWEITE STELLUNGNAHME? GEHEN SIE HIER: http://forum.slicehost.com/comments.php?DiscussionID=3244

Patrick R.
quelle
Oh, es hat funktioniert ... und jede der Websites verwendet dieselbe 1.1.1.1 IP-Adresse. Heißt das, ich brauche die IP-Adresse 2.2.2.2 nicht mehr? Ich benötige nicht für jede SSL-Domäne eine eindeutige IP-Adresse.
John
Sie müssen nicht für jede SSL-Domäne eine eindeutige IP-Adresse verwenden.
Patrick R
Bitte erläutern Sie, warum Sie nicht für jede Domain eine eigene IP benötigen. Dies widerspricht allem, was ich über SSL verstehe ...
Josh
Ich bin mir nicht sicher, was ich sagen soll, außer dass ich mehrere Platzhalterzertifikate auf Servern mit einer IP verwendet habe. Solange der CommonName mit dem Servernamen übereinstimmt, ist alles in Ordnung. Wenn Sie sich in einer gemeinsam genutzten Hosting-Umgebung befinden, können andere Benutzer möglicherweise Ihr Zertifikat verwenden. Wenn es für johnlai2004 und mich funktioniert hat ... na dann, was ist das Problem?
Patrick R
voretaq7 erklärte die Argumentation auf serverfault.com/questions/109800/… - Dies ist TSL, nicht SSL. SSL erfordert eine 1: 1-Beziehung zwischen IP-Adressen und Zertifikaten. TLS nicht. Ich wusste nur nicht, dass TLS (noch) für HTTPS verwendet werden kann
Josh
0

Ich kann derzeit nicht überprüfen, daher ist dies nur eine wilde Vermutung: Die Dateien werden normalerweise in alphabetischer Reihenfolge gelesen. Möglicherweise haben Sie mehr Glück, wenn Sie sie in umgekehrter Reihenfolge lesen lassen, z. B. 000-default in 500-default umbenennen und 400-myhost verwenden. Ich kann mich nicht erinnern, wo Apache gerne den Standardhost hat - zuerst oder zuletzt. Aber von dem, was Sie sagen (Überlappung), könnte es das letzte sein

Olaf
quelle
Sie können sehen, was mit apachectl -t -D DUMP_VHOSTS verwendet wird. Die Bestellung ist zuerst bis zuletzt.
Richard Salts