Apache ignora el segundo host virtual

Apache ignora el segundo host virtual

Estamos usando Apache en un servidor Ubuntu para alojar nuestros sitios web. Los certificados SSL se proporcionan mediante LetsEncrypt y todo funcionó bien durante los últimos años.

El viernes pasado intenté renovar uno de los certificados y no funcionó. Las carpetas .well-known/acme-challenge no se crean, probé varias cosas en los últimos días y ahora es aún peor: tenemos un dominio principal domain1.de y un segundo dominio domain2.com. domain1.de funciona bien con SSL. domain2.com ahora siempre muestra el sitio domain1.de.

Los archivos de configuración son para domain1.de:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName domain1.de
ServerAlias www.domain1.de
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

y SSL:

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
    ServerAdmin webmaster@localhost
    ServerName domain1.de
    ServerAlias www2.domain1.de
    
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    
    SSLEngine on
    SSLCertificateFile      /etc/letsencrypt/live/www2.domain1.de/cert.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/www2.domain1.de/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/www2.domain1.de/fullchain.pem
    
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
         SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
    </Directory>
</VirtualHost>
</IfModule>

Los archivos de configuración son para domain2.com:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName domain2.com
ServerAlias www.domain2.com
DocumentRoot /var/www/domain2.com
ErrorLog ${APACHE_LOG_DIR}/error_journalsuite_com.log
CustomLog ${APACHE_LOG_DIR}/access_journalsuite_com.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =domain2.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

apachectl -S salida:

root@domain1new /var/www/domain2.com # apachectl -S
VirtualHost configuration:
*:443                  domain1.de (/etc/apache2/sites-enabled/domain1.de-ssl.conf:2)
*:80                   is a NameVirtualHost
         default server domain1.de (/etc/apache2/sites-enabled/domain1.de.conf:1)
         port 80 namevhost domain1.de (/etc/apache2/sites-enabled/domain1.de.conf:1)
                 alias www2.domain1.de
         port 80 namevhost domain2.com (/etc/apache2/sites-enabled/domain2.com.conf:1)
                 alias www.domain2.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

Pasé algún tiempo buscando aquí y en otros sitios y en este momento estoy perdido. ¿Algún consejo o idea?

Gracias

Respuesta1

Falta la configuración para el puerto HTTPS 443 para domain2.com. El HTTP con el puerto 80 funciona. Si lo prueba, curl -v http://domain2.comverá que funciona pero redirige a https://domain2.com(según su RewriteRule) que no tiene la configuración adecuada y usa el VirtualHost _default_:443dominio predeterminado domain1.de. Si consulta, curl -v -k https://domain2.comverá que presenta un certificado TLS para domain1.dey lo hace 301 Redirectpara https://www2.domain1.de/.

Para resolver su problema, debe crear <VirtualHost *:443>una ServerName domain2.comconfiguración de SSLEngine adecuada.

información relacionada