Virtual Host com Apache + SSL
Virtual Host é a capacidade de hospedar mais do que um web site numa única máquina, seja com um endereço IP ou mais. SSL adiciona uma camada segura às comunicações via HTTP. Nesse artigo aprenderemos os fundamentos básicos para se configurar virtual hosts comuns e com SSL.
Parte 7: Considerações finais e solução de problemas
Em alguns casos, pode ser que quando for requisitar o endereço, o
navegador liste o conteúdo do diretório ao invés de mostrar o
index.html por exemplo. Para resolver isto, tanto no http.conf e
ssl.conf, mude para:
NameVirtualHost *
<VirtualHost *>
ServerName localhost
DocumentRoot /usr/local/apache2/htdocs
DirectoryIndex index.html
</VirtualHost>
<VirtualHost *>
ServerName www.meusite1.com
DocumentRoot /usr/local/apache2/htdocs/meusite1
DirectoryIndex index.html
</VirtualHost>
<VirtualHost *>
ServerName www.meusite2.org
DocumentRoot /usr/local/apache2/htdocs/meusite2
DirectoryIndex index.html
</VirtualHost>
<VirtualHost *>
ServerName localhost
DocumentRoot /usr/local/apache2/htdocs
DirectoryIndex index.html
</VirtualHost>
<VirtualHost *>
ServerName www.meusite1.com
DocumentRoot /usr/local/apache2/htdocs/meusite1
DirectoryIndex index.html
</VirtualHost>
<VirtualHost *>
ServerName www.meusite2.org
DocumentRoot /usr/local/apache2/htdocs/meusite2
DirectoryIndex index.html
</VirtualHost>
Observe que foram adicionadas as linhas DirectoryIndex que apontam para o index.html. Isto quer dizer que você não precisa requisitar www.meusite1.com/index.html para ver o conteúdo de index.html, simplesmente requisitará www.meusite1.com e verá seu conteúdo.
Pode ser que onde foi colocado o endereço da máquina localhost como Virtual Host em:
<VirtualHost *>
ServerName localhost
DocumentRoot /usr/local/apache2/
DirectoryIndex /index.html
</VirtualHost>
dê problema, como do tipo listar o conteúdo do diretório /usr/local/apache2/ para qualquer site que for requisitado. Para resolver o problema, apenas o retire.
Como teste, comente as linhas dos Virtual Hosts apenas do arquivo http.conf, como no exemplo seguinte:
#<VirtualHost *>
# ServerName www.meusite1.com
# DocumentRoot /usr/local/apache2/htdocs/meusite1
# DirectoryIndex /index.html
#</VirtualHost>
# ServerName www.meusite1.com
# DocumentRoot /usr/local/apache2/htdocs/meusite1
# DirectoryIndex /index.html
#</VirtualHost>
Logo, pare o Apache e com o comando "/usr/local/apache2/bin/apachectl startssl", inicie-o novamente.
Tente acessar o endereço http://www.meusite1.com, observe que é sem o "s". O Apache dará uma mensagem explicando a situação.
Eu uso slackware, o openssl ja vai instalado por default, pra atualizar eu baixo um .tgz do site oficial e atualizo e no apache 2 eu coloco apenas o --enable-ssl e --enable-so, funciona tambem.
Eu ate fiz uma dica, nao lembro, sobre como ativar o ssl no apache2 mas nao abordei a forma de configurar vhosts com ssl.
http://www.vivaolinux.com.br/dicas/verDica.php?codigo=1512