Я понимаю, что есть много разных вариантов этого вопроса о сбое сервера, но мне не удалось объединить ответы, соответствующие нашей ситуации.
У нас есть веб-сервер CentOS 6.2, на котором запущен Apache 2.2, на котором размещены десятки веб-сайтов с одним и тем же родительским доменом - например, cat.example.com, bat.example.com, rat.example.com.
Мы хотели бы добавить https к некоторым (но не всем) из этих поддоменов. Поддомены https будут использовать https постоянно. Например http://bat.example.com перенаправит на https://bat.example.com
Мы приобрели лицензию Comodo на многодоменный сертификат SSL для SSL, которая позволяет нам создавать сертификаты для нескольких доменов. Веб-сервер имеет только один общедоступный IP-адрес.
Как нам настроить Apache для этого? Если запись виртуального хоста в httpd.conf для bat.example.com:
<VirtualHost *:80>
ServerName bat.example.com
DocumentRoot /var/www/sites/bat
ErrorLog logs/bat-error_log
CustomLog logs/bat-access_log common
</VirtualHost>
Какие изменения необходимо внести, чтобы включить SSL на сайте bat.example.com и убедиться, что http://bat.example.com все еще действует, но перенаправляет на https://bat.example.com?
Сначала вам нужно настроить SSL VirtualHost, например:
<VirtualHost *:443>
ServerName bat.example.com
DocumentRoot /var/www/sites/bat
ErrorLog logs/bat-error_log
CustomLog logs/bat-access_log common
SSLEngine on
SSLCertificateFile /path/to/cert
SSLCertificateKeyFile /path/to/key
</VirtualHost>
На вашем виртуальном хосте без SSL вам потребуются некоторые директивы Rewrite для принудительного выполнения запросов к соответствующему виртуальному хосту SSL. Итак, дополнительные директивы к тому, что у вас есть, например:
RewriteEngine on
RewriteRule ^/(.*) https://bat.example.com/$1 [R,L]
Таким образом, все запросы к обычному виртуальному хосту HTTP будут перезаписаны на виртуальный хост SSL.