Apache2 com SSL eu tenho que copiar blocos VirtualHost?

18

No Apache2 no ubuntu eu tenho meu site ouvindo no 80, e agora eu quero adicionar SSL. Existe uma maneira de ativar o SSLEngine para a porta 443 para que eu não precise copiar todo o bloco do VirtualHost?

Quando faço isso:

Listen 80
Listen 443
NameVirtualHost *
<VirtualHost *>
  SSLEngine On
  ... a bunch more lines...
</VirtualHost>

Ele está ativando o SSLEngine para a porta 80. Existe uma maneira de usar somente o bloco VirtualHost e apenas ativar o SSLEngine para a porta 443? Então eu posso fazer algo assim?

Listen 80
Listen 443
NameVirtualHost *
<VirtualHost *>
   <IfPort 443>
      SSLEngine On
   </IfPort>
   ... a bunch of lines I don't want to copy into another VirutalHost block...
</VirtualHost>
    
por dar 11.11.2009 / 17:16

3 respostas

14

Você não pode fazer um vhost fazer HTTP e HTTPS, porque eles são vhosts separados, atendendo protocolos separados. Em vez disso, você deve colocar toda a configuração comum em um arquivo separado e incluir esse arquivo nos vhosts SSL e não SSL do domínio.

Exemplo mínimo:

# /etc/apache2/sites-available/example.com
<VirtualHost *:80>
  Include /etc/apache2/domains/example.com
</VirtualHost>

<VirtualHost 192.0.2.1:443>
  SSLEngine On
  SSLCertificateFile /etc/ssl/example.com_crt
  SSLCertificateKeyFile /etc/ssh/example.com_key

  Include /etc/apache2/domains/example.com
</VirtualHost>

# /etc/apache2/domains/example.com
ServerName example.com
ServerAlias www.example.com

ServerAdmin [email protected]
DocumentRoot /home/example/public_html
ErrorLog /home/example/apache/error.log
    
por 11.11.2009 / 17:23
1

Como mencionei em uma pergunta diferente em stackoverflow ( link ):

Outra opção, em vez de usar Include , é usar Macro (para que você possa manter tudo em um arquivo).

Primeiro, ative o módulo de macro:

a2enmod macro

Em seguida, coloque o seu material compartilhado em uma macro e use do seu virtualhosts:

<Macro SharedStuff>
   ServerName example.com
   ServerAdmin [email protected]
   <DocumentRoot /var/www/example>
      ...
   </DocumentRoot>
</Macro>

<VirtualHost *:80>
  Use SharedStuff
</VirtualHost>

<VirtualHost *:443>
  Use SharedStuff

  SSLEngine On
  SSLProtocol All -SSLv2 -SSLv3
  ...
</VirtualHost>

As macros também podem receber parâmetros e ser definidas em outros arquivos incluídos; então você pode usá-los um pouco como Funções, e economizar muita duplicação em seus arquivos de configuração do Apache.

Veja aqui para mais detalhes:

link

    
por 17.09.2018 / 22:23
0

Você pode colocar as configurações de diretório em um bloco <Directory> fora de qualquer bloco <VirtualHost> . Isso será aplicado a todos os hosts virtuais, mas somente dentro do caminho especificado.

    
por 16.11.2016 / 15:41