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

Перенаправление Apache с https на https

Я пытаюсь перенаправить без правила перезаписи, например, https://www.domain.com к https://www.domain.net . У меня есть подстановочный сертификат для * .domain.net. Это дает следующее предупреждение в моем error_log

[предупреждение] Подстановочный знак сертификата сервера RSA CommonName (CN) `* .domain.net 'НЕ соответствует имени сервера !?

В этом есть смысл, и я понимаю, почему предупреждение. Я хотел бы спросить, есть ли способ использовать директиву Redirect для выполнения вышеуказанного без предупреждений. Вот мои виртуальные хосты в ssl.conf:

<VirtualHost *:443>
    SSLEngine on
    ServerName www.domain.net
    DocumentRoot /var/www/html/domain

    SSLOptions -FakeBasicAuth -ExportCertData +StrictRequire +OptRenegotiate -StdEnvVars
    SSLStrictSNIVHostCheck off
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    ServerName www.domain.com
    ServerAlias www.domain.info
    Redirect permanent / https://www.domain.net
</VirtualHost>

Также, если есть решение, можно ли его использовать для перенаправления с htps: //domain.com на htps: //www.domain.com? Большое спасибо!

Имейте в виду, что происходит подтверждение SSL и процесс проверки базового HTTPS-соединения. перед фактический запрос отправлен. Это означает, что от сервера не будет ответа HTTP до того, как подлинность сертификата сервера будет проверена, даже не будет перенаправления.

Если у вас только одна конечная точка (т. Е. Только 1 общедоступный IP-адрес), вам нужно будет купить сертификат SAN, то есть сертификат с Альтернативные имена субъектов.

Таким образом у вас может быть подстановочный сертификат для *.domain.net с SAN www.domain.com, и вы не получите предупреждений о сертификатах

Для получения дополнительной информации проверьте старый ответ, который я дал для аналогичной ситуации просто с nginx вместо того apache

www.domain.com (и в этом отношении www.domain.info) не являются тем же доменом, что и www.domain.net, отсюда и предупреждение. У вас также должны быть сертификаты для этих доменов, если вам нужно избежать этого предупреждения.

Из другого вопроса ( https://stackoverflow.com/a/53424202/2590491 ):

Мое решение: httpS://www.example.com -> http://www.example.net -> httpS://www.example.net

<VirtualHost *:80>
    ServerName www.example.net
    Redirect "/" "https://www.example.net/"
</VirtualHost>

<VirtualHost *:443>
    ServerName www.example.com

    #### The Tricky ####
    Redirect "/" "http://www.example.net/"

    SSLEngine on
    # SSLProxyEngine On
    SSLCertificateFile /path/example_com.crt
    SSLCertificateKeyFile /path/example_com.key
    SSLCertificateChainFile /path/DigiCertCA_example_com.crt
    SSLProtocol ALL -SSLv2 -SSLv3
    SSLHonorCipherOrder on
    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
</VirtualHost>

<VirtualHost *:443>
    ServerName www.example.net
    ...
    SSLEngine on
    # SSLProxyEngine On
    SSLCertificateFile /path/example_net.crt
    SSLCertificateKeyFile /path/example_net.key
    SSLCertificateChainFile /path/DigiCertCA_example_net.crt
    SSLProtocol ALL -SSLv2 -SSLv3
    SSLHonorCipherOrder on
    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
</VirtualHost>