У меня есть сервер EC2 с Ubuntu. На нем работает несколько веб-сайтов, и один из них использует сертификат SSL. SSL работает нормально, но проблема в том, что когда вы вводите URL-адрес одного из других доменов с https и добавляете адрес одной из страниц домена SSL, вы можете увидеть страницу домена SSL.
Например https://domain.com/page/1 это исходная страница. Если вы введете https://domain2.com/page/1 вы увидите исходную страницу настроенного домена SSL. Если вы удалите https из https://domain2.com/page/1 так что это http://domain2.com/page/1 вы видите, что страница не найдена, что вы должны увидеть.
Извините, но это очень сложно объяснить, и я никогда раньше с этим не сталкивался. У меня должно быть что-то неправильно настроенное с Apache, но я не уверен, что именно.
У вас есть только один виртуальный хост SSL, поэтому один виртуальный хост SSL будет соответствовать ВСЕМ запросам SSL, независимо от имени домена.
Получите сертификат SSL для каждого домена, который будет размещать ваш сервер. Настройте виртуальный хост для каждого из этих доменов.
Это поможет только в браузерах, поддерживающих SNI. Браузеры, не поддерживающие SNI, получат первый виртуальный хост SSL независимо от того, какой домен используется.
Создайте виртуальный хост SSL по умолчанию с собственным сертификатом. Что-то вроде webserver.example.com.
Это будет работать только с браузерами, поддерживающими SNI. Браузеры, не поддерживающие SNI, получат виртуальный хост по умолчанию, даже когда они попытаются просмотреть «настоящий» виртуальный хост SSL.
Опять же, настройте виртуальный хост SSL для каждого домена, но пусть все они используют один и тот же сертификат SAN.
Это будет работать даже с браузерами, которые не поддерживают SNI, однако становится проблемой, если вы захотите добавить больше доменов позже.
Я нашел одно работающее решение, но не считаю его лучшим. Я пошел дальше и создал общий самозаверяющий сертификат для использования в других доменах, для которых не настроен SSL или сертификаты SSL. Затем я создал и включил файлы виртуального хоста для каждого из этих доменов. Если у кого-то есть лучшее решение, поделитесь.
Если вы установите openssl-1.X и веб-сервер с его поддержкой, вы можете использовать SNI, что означает указание имени сервера, и он работает как виртуальные хосты для виртуальных хостов SSL.
Просто скомпилируйте openssl-1.X и ваш веб-сервер, подключив его к недавно скомпилированным библиотекам, и у вас могут быть виртуальные ssl-домены!
Ура
другой ответ должен быть правильным.
Ваша проблема: ваши домены, у которых нет SSL, перенаправляются на домен SSL, если у них есть префикс https.
Причина: сервер видит, что вы обращаетесь к домену через https, и перенаправляет вас в домен, для которого выпущен сертификат SSL.
Решение: перенаправьте каждый домен, для которого у вас нет SSL, с https на http. Перезапись модов может сделать это за вас, преобразуя запросы, попадающие в ваши домены без SSL, из попыток подключения по https (вызывающих перенаправление) в подключение по http (без запуска перенаправления.
Дайте мне знать, если это решит проблему.
Ваша проблема в том, что сервер перенаправляет на домен, на который указывает ваш сертификат SSL. Сервер знает только то, что ваш клиент пытается получить доступ к сайту через https и что у него есть SSL, который указывает на ваш домен с SSL. Вам нужно специально указать ему перенаправить домены, отличные от https, на http, чтобы решить проблему.
Для этой цели вы можете использовать mod_rewrite, добавив в файл .htaccess следующее:
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}