Witryna SSL nie używa poprawnego adresu IP w Apache i Ubuntu

10

Próbuję skonfigurować serwer WWW Apache-Ubuntu-php. Mój serwer będzie obsługiwał wiele witryn SSL, każda witryna SSL będzie miała swój własny adres IP (chyba że istnieje lepszy sposób).

Przypuszczam, że pierwszym krokiem jest sprawienie, by apache rozpoznał co najmniej dwa różne adresy IP. W tej chwili mam wersję strony internetowej w wersji SSL i innej niż SSL, czyli http://mysite.com i https://mysite.com . Chociaż oba są obecnie uruchomione na moim serwerze, nie mogę zmusić obu do używania różnych adresów IP. Obecnie obaj korzystają z adresu IP 1.1.1.1. Kupiłem drugi adres IP 2.2.2.2, ale https://mysite.com nie zaakceptuje go, a firefox narzeka na błąd „ssl_error_rx_record_too_long”. Oto moje 2 pliki vhost

/ 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>

W mysite.com, jeśli zamienię <VirtualHost *: 443> na <VirtualHost 2.2.2.2:443>, Firefox narzeka na błąd „ssl_error_rx_record_too_long”.

Kiedy więc próbuję utworzyć i włączyć /etc/apache2/site-enabled/mysite2.com z innym certyfikatem SSL na trzecim adresie IP, Apache skarży się na problem „nakładania się”.

Czy ktoś może mi powiedzieć, jak wstać z mojego serwera, abym mógł hostować wiele witryn SSL w różnych domenach? Chcę, aby certyfikat SSL działał dla IE 7+, FF i Safari w popularnym systemie operacyjnym, takim jak WinXP, Vista, Win7 i OSX.

Jan
źródło

Odpowiedzi:

7

Ustawiłem to na moich serwerach, dostosowując plik /etc/apache2/ports.conf w następujący sposób:

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

Powinieneś wtedy móc korzystać z edycji /etc/apache2/sites-enabled/mysite.com (część kodu pominięto, aby skrócić przykład):

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

Dla tylu vhostów, ile chcesz.

Edycja: POTRZEBUJESZ DRUGIEJ OPINII? PRZEJDŹ TUTAJ: http://forum.slicehost.com/comments.php?DiscussionID=3244

Patrick R.
źródło
och, działało ... i każda ze stron używa tego samego adresu IP 1.1.1.1. Czy to oznacza, że ​​nie potrzebuję już adresu IP 2.2.2.2? Nie potrzebuję unikalnego adresu IP dla każdej domeny SSL?
John
Nie musisz używać unikalnego adresu IP dla każdej domeny SSL.
Patrick R
Wyjaśnij, dlaczego nie potrzebujesz osobnego adresu IP dla każdej domeny. Jest to sprzeczne ze wszystkim, co rozumiem na temat SSL ...
Josh
Nie jestem pewien, co powiedzieć poza tym, że użyłem wielu certyfikatów symboli wieloznacznych na serwerach z jednym adresem IP. Tak długo, jak CommonName pasuje do ServerName, nic ci nie będzie. Teraz, jeśli jesteś we współdzielonym środowisku hostingowym, może to umożliwić innym korzystanie z Twojego certyfikatu. Jeśli zadziałało to dla johnlai2004 i dla mnie ... to w czym problem?
Patrick R
voretaq7 wyjaśnił uzasadnienie na serverfault.com/questions/109800/… - To jest TSL, a nie SSL. Protokół SSL wymaga relacji 1: 1 między adresami IP i certyfikatami. TLS nie. Po prostu nie wiedziałem, że TLS może być używany do HTTPS (jeszcze)
Josh
0

Obecnie nie mogę sprawdzić, więc to tylko zgadywanka: pliki są zwykle odczytywane w kolejności alfabetycznej. Możesz mieć więcej szczęścia, gdy będziesz czytać je w odwrotnej kolejności, np. Zmień nazwę 000-default na 500-default i użyj 400-myhost. Nie pamiętam, gdzie apache lubi mieć domyślnego hosta - pierwszy lub ostatni. Ale z tego, co mówisz (pokrywają się), może to być ostatni

Olaf
źródło
Możesz zobaczyć, czego będzie używać z apachectl -t -D DUMP_VHOSTS. Kolejność trwa od pierwszej do ostatniej.
Richard Salts,