Como configuro o Apache para servir https?

2

Depois de muitas horas, finalmente consegui configurar o Apache para usar meu certificado SSL, mas acabei de descobrir que há algo errado na minha configuração. Se eu tentar acessar meu domínio pelo Google Chrome apenas inserindo o seguinte endereço, recebo o seguinte aviso:

 erichermansson.com

 Forbidden
 You don't have permission to access / on this server. 

Mas, se eu digitar o seguinte endereço no Google Chrome, posso acessar o servidor e seu funcionamento com o meu certificado:

 https://erichermansson.com

O que eu faço de errado?

Aqui está o meu VirtualHost:

 <VirtualHost *:443>
ServerAdmin [email protected]
ServerName erichermansson.com
ServerAlias www.erichermansson.com
SSLEngine ON
SSLCertificateFile /www/erichermansson.com/ssl/erichermansson.com.crt
SSLCertificateKeyFile /www/erichermansson.com/ssl/erichermansson.com.key
DocumentRoot /www/erichermansson.com/html/
ErrorLog /www/erichermansson.com/logs/error.log
CustomLog /www/erichermansson.com/logs/access.log combined
<Directory /www/erichermansson.com/html/ >
     Options FollowSymLinks
     AllowOverride All
     Order deny,allow
     Allow from all
 </Directory>
</VirtualHost>
    
por Eric Hermansson 08.06.2016 / 18:56

1 resposta

3

Para o HTTP redirecionar para HTTPS você precisa (os 3 primeiros passos que você provavelmente já fez):

  1. Permite a porta 80 no seu roteador.

  2. Encaminhe a porta 80 para o seu servidor.

  3. Perfure seu firewall:

    sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    
  4. Defina VirtualHost para a porta 80 (assim como para 443):

    <VirtualHost *:80>
      ServerName             erichermansson.com
      ServerAlias            www.erichermansson.com
      RewriteEngine          on
      RewriteCond            %{HTTP_HOST} ^www\.(.*)$ [NC]
      RewriteRule            ^(.*)$ https://%1/$1 [R]
      RewriteCond            %{HTTPS} !on
      RewriteRule            ^/?(.*) https://%{SERVER_NAME}/$1 [R=301]
    </VirtualHost>
    
    <IfModule mod_ssl.c>
    
      <VirtualHost *:443>
    
      ... your code here ...
    
      </VirtualHost>
    
    </IfModule>
    
  5. Ativar mod_rewrite :

    sudo a2enmod rewrite
    
  6. Defina um redirecionamento de HTTP para HTTPS, algo como:

    RewriteCond            %{HTTPS} !on
    RewriteRule            ^/?(.*) https://%{SERVER_NAME}/$1 [R=301]
    

    que já fizemos no passo 4.

  7. E, finalmente, reinicie o Apache:

    sudo service apache2 restart
    
por 08.06.2016 / 19:05