Apache перенаправляет несколько доменных имен из https
Мой сервер распространяет два основных сайта, говорит: www.google.com & www.facebook.com (да, я знаю:p)
Я хочу, чтобы они распространялись через https. Используя Apache, я определил файл vhost в sites-available/enabled, содержащий это:
<VirtualHost *:80>
ServerName google.com
Redirect / https://www.google.com/
</VirtualHost>
<VirtualHost *:80>
ServerName facebook.com
Redirect / https://www.facebook.com/
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /srv/www/google/www/
ServerName www.google.com
ServerAlias www.facebook.com
<Directory ... />
# Google & Facebook points to the same directory (crazy right ?)
# Next of the config
</VirtualHost>
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /path/to/google.crt
SSLCertificateKeyFile /path/to/google.key
DocumentRoot "/srv/www/google/www/"
ServerName www.google.com
<Directory .../>
# Next of the config
</VirtualHost>
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /path/to/facebook.crt
SSLCertificateKeyFile /path/to/facebook.key
DocumentRoot "/srv/www/google/www/"
ServerName www.facebook.com
<Directory .../>
# Next of the config
</VirtualHost>
- Если я захожу на https://www.google.com/, httpS работает правильно
- Если я захожу на https://www.facebook.com/, httpS работает правильно.
- Если я захожу на http://www.google.com/, http работает правильно # Без https!
- Если я захожу на http://www.facebook.com/, http работает правильно # Без https!
НО:
- Если я захожу на https://facebook.com/, он не может сказать, что SSL-соединение не соответствует ожиданиям: Google.com вместо facebook.com
Исходя из моего файла конфигурации, я понимаю, почему, поэтому я попытался добавить:
<VirtualHost *:443>
SSLEngine On
ServerName facebook.com
Redirect / https://www.facebook.com/
</VirtualHost>
Но тогда я даже не могу получить доступ к facebook.com и www.facebook.com через http / https.
Поэтому мой вопрос довольно прост: как я могу перенаправить весь доступ https на facebook.com (и, в конечном итоге, на все дочерние страницы facebook: facebook.fr, www.facebook.fr и т. Д.) На www.facebook.com (перенаправление на домен www) в HTTPS?
Спасибо за вашу помощь!:)
3 ответа
Это потому, что вы не настроили виртуальный хост для facebook.com, поэтому Apache выбирает первый настроенный (www.google.com). То, что вы ищете, это директива конфигурации ServerAlias.
Если у вас не включен SNI (который не работает в IE в Windows XP), вы не можете разместить более одного сертификата SSL на одном и том же IP.
Иногда вы можете использовать сертификат SAN (иногда называемый UCC) с обоими доменами, но способ, которым вы сейчас пытаетесь это сделать, просто не сработает.
Важно понимать, что для HTTPS SSL-сертификат сервера проверяется ПЕРЕД доступом к веб-серверу. Это означает, что SSL-сертификат сервера должен содержать имена всех доменов, к которым необходимо получить доступ по этому IP-адресу с помощью индикации имени сервера. Поскольку некоторые клиенты не поддерживают SNI, для их поддержки нередко используются разные IP-адреса для разных сайтов HTTPS.
С кодом, который вы указали выше, https://www.facebook.com/ не будет работать правильно и выдаст предупреждение SSL о неправильном сертификате.