El sitio SSL no usa la IP correcta en Apache y Ubuntu

10

Estoy tratando de configurar un servidor web apache-ubuntu-php. Mi servidor web alojará múltiples sitios SSL, cada sitio SSL tendrá su propia dirección IP (a menos que haya una mejor manera de hacerlo).

Entonces, supongo que el primer paso es hacer que apache reconozca al menos dos direcciones IP diferentes. En este momento, tengo una versión SSL y no SSL de un sitio web que son http://mysite.com y https://mysite.com . Aunque ambos se están ejecutando actualmente en mi servidor, no puedo hacer que ambos usen diferentes direcciones IP. En este momento, ambos están utilizando la IP 1.1.1.1. Compré una segunda dirección IP 2.2.2.2 pero https://mysite.com no la aceptará y firefox se queja con el error "ssl_error_rx_record_too_long". Aquí hay un vistazo a mis 2 archivos 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>

En mysite.com, si reemplazo <VirtualHost *: 443> con <VirtualHost 2.2.2.2:443>, Firefox se queja con el error "ssl_error_rx_record_too_long".

Entonces, cuando intento crear y habilitar un /etc/apache2/site-enabled/mysite2.com con otro certificado SSL en una tercera dirección IP, Apache se queja de un problema de "superposición".

¿Alguien puede decirme cómo levantar mi servidor para que pueda alojar múltiples sitios web SSL en diferentes dominios? Quiero que el certificado SSL funcione para IE 7+, FF y Safari en sistemas operativos populares como WinXP, Vista, Win7 y OSX.

John
fuente

Respuestas:

7

Lo configuré en mis servidores ajustando el archivo /etc/apache2/ports.conf de la siguiente manera:

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

Debería poder usarlo editando /etc/apache2/sites-enabled/mysite.com (se omite algún código para acortar el ejemplo):

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

Para tantos vhosts como quieras.

Editar: ¿ NECESITA UNA SEGUNDA OPINIÓN? VAYA AQUÍ: http://forum.slicehost.com/comments.php?DiscussionID=3244

Patrick R
fuente
oh, funcionó ... y cada uno de los sitios web está utilizando la misma dirección IP 1.1.1.1. Entonces, ¿esto significa que ya no necesito la dirección IP 2.2.2.2? ¿No necesito una IP única para cada dominio SSL?
John
No es necesario que use una IP única para cada dominio SSL.
Patrick R
Explique por qué no necesita una IP separada para cada dominio. Esto va en contra de todo lo que entiendo sobre SSL ...
Josh
No estoy seguro de qué decir aparte de eso, he usado múltiples certificados comodines en servidores con una IP. Mientras el CommonName coincida con el ServerName, estará bien. Ahora, si se encuentra en un entorno de alojamiento compartido, esto puede permitir que otros usen su certificado. Si funcionó para johnlai2004 y para mí ... bueno, ¿cuál es el problema?
Patrick R
voretaq7 explicó el razonamiento en serverfault.com/questions/109800/… - Esto es TSL, no SSL. SSL requiere una relación 1: 1 entre las direcciones IP y los certificados. TLS no lo hace. Simplemente no sabía que TLS podría usarse para HTTPS (todavía)
Josh
0

Actualmente no puedo comprobarlo, así que esto es solo una suposición: los archivos generalmente se leen en orden alfabético. Es posible que tenga más suerte cuando los lea en orden inverso, por ejemplo, cambie el nombre de 000-default a 500-default y use 400-myhost. No recuerdo dónde le gusta a apache tener el host predeterminado: primero o último. Pero por lo que dices (superposición), podría ser el último

Olaf
fuente
Puede ver qué usará con apachectl -t -D DUMP_VHOSTS. El orden es del primero al último.
Richard Salts