Apache 2.4 SSL _default_ sobrescrevendo virtualhost

1

Eu tenho um servidor Apache 2.4 que criei um certificado autoassinado para testar https com um novo site de cliente. O problema que estou encontrando é que o arquivo ssl.conf está sempre carregando para o meu site quando eu tento ir para o virtualhost definido que eu configurei em um arquivo vhosts.conf separado.

Alguém poderia me ajudar a entender por que o virtualhost desejado nunca está carregando e somente o padrão é?

Meu conteúdo do ssl.conf

Listen 443 https

SSL Global Context
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog

SSLSessionCache         shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout  300

SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin

SSLCryptoDevice builtin

<VirtualHost _default_:443>
  DocumentRoot "/var/www/html"
  ServerName localhost:443

  ErrorLog logs/default_ssl_error_log
  TransferLog logs/default_ssl_access_log
  LogLevel warn

  SSLEngine on
  SSLProtocol all -SSLv2
  SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA

  SSLCertificateFile /etc/pki/tls/certs/localhost.crt
  SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

  <Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
  </Files>
  <Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
  </Directory>

  BrowserMatch "MSIE [2-5]" \
     nokeepalive ssl-unclean-shutdown \
     downgrade-1.0 force-response-1.0

  CustomLog logs/ssl_request_log \
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

Meu conteúdo de arquivo virtualhost

<VirtualHost demo.ffh.com:443>
  ServerAdmin   [email protected]
  ServerName    demo.ffh.com
  DocumentRoot  "/var/www/vhosts/ffh/public"

  RewriteEngine On
  # And THIS doesn't seem to be working at all!
  LogLevel debug rewrite:trace8

  <Directory "/var/www/vhosts/ffh/public/">
    AllowOverride all
    SSLOptions +StdEnvVars
    #Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
    SSLRequireSSL On
  </Directory>

  SSLEngine on

  SSLCertificateKeyFile /etc/httpd/ssl/ssl.key/demo_ffh.key
  SSLCertificateFile    /etc/httpd/ssl/ssl.crt/demo_ffh.crt

  <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
  </FilesMatch>

  BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0

  CustomLog logs/ssl_ffh-access.log combined
  ErrorLog logs/ssl_ffh-error.log
</VirtualHost>

Alguém vê por que o site vhosts.conf está sendo ignorado em favor do padrão? E como eu corrijo isso? Tenho batido minha cabeça contra a parede o dia todo com isso.

NOTA: "Provavelmente vale a pena mencionar que tentei o endereço IP e *: 443 no vhost.conf em vez do domínio, mas ainda assim não tenho amor."

    
por Skittles 11.07.2016 / 00:59

2 respostas

1

Eu tenho tido esse problema e quatro soluções foram para

  1. altere os caminhos para apontar para o meu certificado e chave (e qualquer outro certs intermediário?) diretamente no arquivo /etc/httpd/conf.d/ssl.conf

This is ok if you have only a single SSL cert for the whole machine.

  1. remova toda a entrada virtualhost padrão do arquivo ssl.conf,

This gives me the configuration in SSL.conf and allows me to determine my own VirtualHost entries for multiple SSL certs (if necessary)

  1. coloque o ssl.conf (alfabeticamente) depois do arquivo conf desejado, que eu chamei de "vhosts.conf" (alterei o ssl.conf para "vv.conf" para testar isso)

This works as well for multiple SSL certs in my vhosts.conf file, but makes me feel dirty because I'm changing names. I guess one could use the conf.modules.d-meets-sitesenabled syntax of 010-vhosts.conf 020-ssl.conf and feel very slightly less dirty.

  1. insira meu próprio certificado e digite /etc/pki/tls/certs/localhost.crt e /etc/pki/tls/private/localhost.key

Eh... maybe for some people.. I didn't like that though.

    
por 20.07.2017 / 03:10
0

Ok ... eu acho que consertei. O.o

Estou incerto sobre o que exatamente fez isso funcionar, mas as últimas coisas que fiz foram:

  1. Eu criei um novo certificado auto-assinado e configure o vhost para usá-lo e a respectiva chave.
  2. Eu mudei a configuração do virtualhost para *: 443.
  3. Reiniciou o servidor apache. E VIOLA! O que dá?!

Oh bem ... talvez lição aprendida aqui?

    
por 11.07.2016 / 02:36