Назад | Перейти на главную страницу

Виртуальный хост Apache только для перенаправления

У меня несколько доменов, но у меня только один сертификат. Я создал два виртуальных хоста, один с сертификатом для домена: domain.lt, второй с перенаправлением на domain.lt

Конфигурация SSL Apache:

<IfModule mod_ssl.c>

    <VirtualHost *:443>
        <Directory "/var/www/html">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            Allow from all
        </Directory>

        ServerName domain.lt
        ServerAlias www.domain.lt     
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateFile /etc/letsencrypt/live/domain.lt/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/domain.lt/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf

        <Directory "/var/www/html/main/wp-content/uploads/">
            Options -Indexes
        </Directory>
    </VirtualHost>

    <VirtualHost *:443>
        <Directory "/var/www/html">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            Allow from all
        </Directory>

        ServerName domain.pk
        ServerAlias www.domain.pk
        ServerAlias domain.fi
        ServerAlias www.domain.fi
        ServerAlias domain.eu
        ServerAlias www.domain.eu
        ServerAlias domain.hk
        ServerAlias www.domain.hk
        ServerAlias domain.ae
        ServerAlias www.domain.ae

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        RewriteEngine on
        RewriteCond %{HTTP_HOST} ^(www.)?domain.(pk|fi|eu|hk|ae)$
        RewriteRule ^(.*)$ https://domain.lt%{REQUEST_URI} [L,R=301]
    </VirtualHost>

</IfModule>

Но в браузере все еще появляются предупреждения о том, что соединение небезопасно и сертификат предназначен только для domain.lt. После добавления исключения в браузере меня перенаправляют. Как я могу этого добиться?

Часть соединения TLS (SSL) происходит перед частью запроса HTTP.

Это означает, что вы ДОЛЖНЫ предоставить действительный сертификат для домена, запрашиваемого браузером, ПРЕЖДЕ, чем вы сможете отправить перенаправление HTTP 302 / etc. Весь HTTP завершается шифрованием TLS.

В противном случае браузеры конечных пользователей будут показывать предупреждения, которые необходимо обойти (не лучшая практика).