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://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 о неправильном сертификате.

Другие вопросы по тегам