НАСТРОИТЬ:
Могут быть причины, по которым использовать этот подход неправильно, но пока он работает.
Настройка vhosts:
# secure domain 1
<VirtualHost IP:443>
SSL stuff specifying certificate etc.
ServerName domain1.org
</VirtualHost>
# secure domain 2
<VirtualHost IP:81>
SSL stuff for domain2.org
ServerName domain2.org
</VirtualHost>
ЦЕЛЬ: Некоторые папки внутри docroot domain2.org должны быть защищены. Я использовал файл .htaccess, чтобы переписать URL-адрес на https на порт 81:
RewriteEngine On
RewriteCond %{SERVER_PORT} !^81$
RewriteRule (.*) https://%{HTTP_HOST}:81%{REQUEST_URI} [R]
Допустим, я положил .htaccess в папку 'вторая папка'.
При доступе http://domain2.org/secfolder
это успешно переписывается на https: //domain2.org:81 год/ secfolder.
ВЫПУСК: При доступе https://domain2.org/secfolder
(без порта 81) используется сертификат от первого виртуального хоста (domain1.org), и браузер жалуется, что сайт небезопасен, потому что сертификат недействителен для domain2.org.
я думал что RewriteCond %{SERVER_PORT} !^81$
также перепишет https://domain2.org
к https://domain2.org:81
, но это не так. Похоже, что файл .htaccess в этом случае вообще не используется.
На данный момент я не уверен как применить RewriteRule к https://domain2.org
. Я попытался создать дополнительный виртуальный хост для домена 2 на порту 443 перед тем, как для домена domain1.org, но Apache, похоже, подавился этим. Я надеюсь, что кто-нибудь из вас знает, как к этому подойти. TIA.
Изменить: был удален ответ, но он сказал:
«Вы не можете подключиться к серверу без предварительной проверки сертификата, и поскольку сертификат предназначен для неправильного домена, вы не можете перенаправить». Несоответствие сертификата действительно конец строки? После этого невозможно принудительное перенаправление / перезапись URL?
Помните, что когда вы устанавливаете HTTPS-соединение с https://domain2.org (что действительно связано с https://domain2.org:443) порядок примерно
т.е. когда Apache решает, какой сертификат отправить, он еще не получил информацию, которую mod_rewrite будет использовать для перенаправления.
Чтобы обойти это, вам понадобится один сертификат, действительный для обоих доменов. Это может быть либо подстановочный сертификат (если это domain1.example.com и domain2.example.com, получите сертификат для * .example.com), или вы можете попытаться получить сертификат SSL с Тема из "domain1.org", но Альтернативное имя субъекта из "domain2.org".
В любом случае вам нужно будет выполнить перенаправление в основных файлах конфигурации Apache - если он находится в файле .htaccess в DocumentRoot domain2.org, то запросы, использующие VirtualHost domain1.org, перейдут в другой каталог DocumentRoot и выиграют ' я никогда не видел файл.
У вас есть какой-то подстановочный сертификат или вы пытаетесь разместить разные домены с разными сертификатами SSL на одном IP?
Если это не подстановочный знак, вы не сможете это сделать, потому что вы можете использовать только один сертификат SSL для каждого IP-адреса, независимо от того, на каком порту он находится ...