Я пытаюсь настроить самозаверяющий сертификат SSL между моим собственным VPS и Cloudflare (рядом с Полный SSL). Для этого я использую следующие VirtualHosts:
<VirtualHost *:80>
ServerName domain.com
Redirect permanent / https://www.domain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName www.domain.com
DocumentRoot /var/www/public/www
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>
Но всякий раз, когда я пытаюсь получить доступ к domain.com, он возвращает 403 Forbidden
и я получаю следующую ошибку в моих журналах apache2:
[Fri Jan 30 00:19:23 2015] [error] [client (ip)] Directory index forbidden by Options directive: /var/www/public/
Это означает, что он пытается получить доступ к DocumentRoot по умолчанию, установленному в apache2.conf
:
ServerAdmin server@domain.com
DocumentRoot /var/www/public
Обратите внимание, что это делает работать, когда я меняю порт второго VirtualHost на 80 и прокомментирую 3 строки о SSL.
Итак, мой вопрос: почему не используется DocumentRoot, который я указал в VirtualHost (*:433
)?
РЕДАКТИРОВАТЬ
Когда я приостанавливаю Cloudflare и перехожу в https://www.domain.com Я могу получить к нему доступ (конечно, с предупреждением, потому что сертификат самоподписанный). Так может это как-то связано с Cloudflare?
Я предполагаю, что вам нужно включить NameVirtualHost для порта SSL.
Это можно сделать, отредактировав файл /etc/apache2/ports.conf.
Здесь вы можете увидеть конфигурацию порта 80:
ИмяVirtualHost *: 80
Слушай 80
Вы также можете увидеть теги IFmodule mod_ssl.c.
По умолчанию внутри тегов должно быть только «Listen 443», и вам просто нужно добавить «NameVirtualHost *: 443» над строкой «Listen 443». Я считаю, что это должно решить вашу проблему.
По-видимому, у меня нет репутации, чтобы публиковать изображения, так что пожалуйста: http://i.imgur.com/vGCEAGb.png
РЕДАКТИРОВАТЬ: не забудьте перезапустить Apache.