Sito SSL che non utilizza l'IP corretto in Apache e Ubuntu


10

Sto cercando di configurare un server web apache-ubuntu-php. Il mio server web ospiterà più siti SSL, ogni sito SSL avrà il proprio indirizzo IP (a meno che non ci sia un modo migliore per farlo).

Quindi suppongo che il primo passo sia ottenere apache per riconoscere almeno due diversi indirizzi IP. In questo momento, ho una versione SSL e non SSL di un sito Web che sono http://mysite.com e https://mysite.com . Sebbene entrambi siano attualmente in esecuzione sul mio server, non riesco a ottenere entrambi per utilizzare indirizzi IP diversi. In questo momento, entrambi stanno usando l'IP 1.1.1.1. Ho acquistato un secondo indirizzo IP 2.2.2.2 ma https://mysite.com non lo accetterà e firefox si lamenta dell'errore "ssl_error_rx_record_too_long". Ecco uno sguardo ai miei 2 file 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 john@mysite.com
     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 john@mysite.com
     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>

In mysite.com, se sostituisco <VirtualHost *: 443> con <VirtualHost 2.2.2.2:443>, Firefox si lamenta dell'errore "ssl_error_rx_record_too_long".

Quindi quando provo a creare e abilitare un /etc/apache2/site-enabled/mysite2.com con un altro certificato SSL su un terzo indirizzo IP, Apache si lamenta di un problema di "sovrapposizione".

Qualcuno può dirmi come installare il mio server in modo da poter ospitare più siti Web SSL su domini diversi? Voglio che il certificato SSL funzioni per IE 7+, FF e Safari sui sistemi operativi popolari come WinXP, Vista, Win7 e OSX.

Risposte:


7

Ho impostato questo sui miei server modificando il file /etc/apache2/ports.conf come segue:

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

Dovresti quindi essere in grado di utilizzare modificando /etc/apache2/sites-enabled/mysite.com (un codice omesso per abbreviare l'esempio):

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

Per tutti i host che desideri.

Modifica: BISOGNO DI UNA SECONDA OPINIONE? VAI QUI: http://forum.slicehost.com/comments.php?DiscussionID=3244


oh, ha funzionato ... e ciascuno dei siti Web utilizza lo stesso indirizzo IP 1.1.1.1. Quindi questo significa che non ho più bisogno dell'indirizzo IP 2.2.2.2? Non ho bisogno di un IP univoco per ciascun dominio SSL?
Giovanni,

Non è necessario utilizzare un IP univoco per ciascun dominio SSL.
Patrick R

Spiegare perché non è necessario un IP separato per ciascun dominio. Questo va contro tutto ciò che capisco su SSL ...
Josh

Non sono sicuro di cosa dire se non che ho usato più certs jolly su server con un IP. Finché il CommonName corrisponde al ServerName andrà bene. Ora, se ti trovi in ​​un ambiente di hosting condiviso, questo potrebbe consentire ad altri di utilizzare il tuo certificato. Se ha funzionato per johnlai2004 e per me ... beh, qual è il problema?
Patrick R

voretaq7 ha spiegato il ragionamento su serverfault.com/questions/109800/… - Questo è TSL, non SSL. SSL richiede una relazione 1: 1 tra indirizzi IP e certificati. TLS no. Non sapevo che TLS potesse essere usato per HTTPS (ancora)
Josh il

0

Al momento non posso controllare, quindi questa è solo un'ipotesi selvaggia: i file vengono generalmente letti in ordine alfabetico. Potresti avere più fortuna quando li leggi in ordine inverso, ad esempio rinomina 000-default in 500-default e usi 400-myhost. Non ricordo dove ad Apache piace avere l'host predefinito, primo o ultimo. Ma da quello che dici (sovrapposizione), potrebbe essere l'ultimo


Puoi vedere cosa userà con apachectl -t -D DUMP_VHOSTS. L'ordine è il primo a durare.
Richard Salts,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.