SSL VirtualHost não está usando o DocumentRoot

1

Estou tentando configurar um certificado SSL autoassinado entre o meu próprio VPS e o Cloudflare (ao lado de SSL total ). Estou usando os seguintes VirtualHosts para isso:

<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>

Mas sempre que tento acessar o domínio.com, ele retorna um 403 Forbidden e recebo o seguinte erro nos meus logs do apache2:

[Fri Jan 30 00:19:23 2015] [error] [client (ip)] Directory index forbidden by Options directive: /var/www/public/

Significa que ele tenta acessar o DocumentRoot padrão como definido em apache2.conf :

ServerAdmin [email protected]
DocumentRoot /var/www/public

Note que funciona quando mudo a porta do segundo VirtualHost para 80 e comento as 3 linhas sobre SSL.

Então, minha pergunta é: por que não está usando o DocumentRoot que eu especifiquei no VirtualHost ( *:433 )?

EDITAR

Quando faço uma pausa no Cloudflare e vou para o link , posso acessá-lo (claro, com um aviso porque o certificado é autoassinado). Então, talvez tenha algo a ver com Cloudflare?

    
por Cas Cornelissen 30.01.2015 / 00:35

1 resposta

3

Meu palpite é que você precisa habilitar o NameVirtualHost para a porta SSL.
Isso pode ser feito editando o arquivo /etc/apache2/ports.conf.
Lá você pode ver a configuração da porta 80:

NameVirtualHost *:80
Listen 80

Você também pode ver as tags mod_ssl.c do módulo IF. Por padrão, deve haver apenas "Listen 443" dentro das tags e você só precisa adicionar "NameVirtualHost *: 443" acima da linha "Listen 443". Acredito que isso deve corrigir seu problema.

Aparentemente eu não tenho a reputação de postar imagens, então aqui vai: link

EDIT: Não se esqueça de reiniciar o Apache.

    
por 30.01.2015 / 01:35