Apache2 ssl + virtualhosts do mesmo domínio

2

Meu servidor hospeda vários subdomínios (vhosts) de um website, digamos sub1.example.com e sub2.example.com. A única diferença entre esses vhosts é o documentroot. Todo o resto é compartilhado entre vhosts.

Agora eu gostaria de fazer o mesmo para HTTPS, mas é claro que o ssl + virtualhost é complicado. O bom é que meu certificado SSL é válido para o meu domínio completo. Portanto, não preciso especificar o certificado per-vhosts. A única coisa que quero especificar por vhost é a raiz do documento.

A FAQ diz:

Name-Based Virtual Hosting is a very popular method of identifying different virtual hosts. It allows you to use the same IP address and the same port number for many different sites. When people move on to SSL, it seems natural to assume that the same method can be used to have lots of different SSL virtual hosts on the same server.

It is possible, but only if using a 2.2.12 or later web server, built with 0.9.8j or later OpenSSL. This is because it requires a feature that only the most recent revisions of the SSL specification added, called Server Name Indication (SNI).

Estou usando o Ubuntu 11.10, que vem com o Apache 2.2.20 e o openssl 1.0.0e, então acho que deveria ser bom. No entanto, não consigo fazer isso funcionar. Eu já tenho sites default e ssl-padrão habilitados. Se eu adicionar um virtualhost como eu faria para HTTP:

<VirtualHost *:443>
        ServerName sub1.example.com
        DocumentRoot /var/www/sub1
</VirtualHost>

E então tente reiniciar o Apache, eu recebo:

[Thu Mar 01 23:55:15 2012] [warn] default VirtualHost overlap on port 443, the first has precedence Action 'start' failed.

    
por Jeroen 02.03.2012 / 00:53

1 resposta

2

O que você provavelmente precisa é de três coisas:

  1. Uma diretiva NameVirtualHost *:80 . Se você quiser seguir as convenções do Ubuntu, coloque isso em ports.conf .
  2. Corrija a especificação do host no vhost SSL padrão. Está definido para <VirtualHost _default_:443> na configuração padrão; ele precisa corresponder à especificação do listener de seu outro vhost e à sua diretiva NameVirtualHost .
  3. Você também precisa especificar as configurações relacionadas ao SSL em seu novo vhost. SSLEngine On e suas configurações de certificado são necessárias.

.. e se este não for o caso, por favor, forneça sua configuração existente e a saída de apache2ctl -S .

    
por 02.03.2012 / 01:44