Primeiro: o parâmetro em <VirtualHost …>
não funciona dessa maneira. Em sistemas de "um IP por domínio", destina-se a especificar qual endereço IP o servidor Web irá ligar para (isto é, em qual endereço ele receberá conexões) para esse host virtual. Não é para selecionar o host virtual com base no HTTP "Host:" ou TLS SNI.
No entanto, você diz nos comentários que você tem apenas um único endereço IP (assim, você desejará usar o TLS SNI). Nesse caso, todos os blocos de host virtuais devem ser ligados ao mesmo endereço *
, e o nome do domínio real deve ser especificado como ServerName
.
Segundo: Na configuração do Apache, o primeiro bloco VirtualHost correspondente ganha. Se você tiver correspondências exatas de curinga ServerName
acima , ela sempre será escolhida. Portanto, verifique se os seus VirtualHosts estão ordenados corretamente.
# The specific subdomains go first...
<VirtualHost *:443>
ServerName servers.domain1.com
DocumentRoot /app/corporate/mediaserver/public
SSLEngine on
SSLCertificateFile /app/corporate/mediaserver/certs/fullchain.pem
SSLCertificateKeyFile /app/corporate/mediaserver/certs/privkey.pem
</VirtualHost>
# ...and the wildcard is last:
<VirtualHost *:443>
ServerName domain1.com
ServerAlias *.domain1.com
DocumentRoot /var/www/domain2
SSLEngine on
SSLCertificateFile /app/domain2/certs/fullchain.pem
SSLCertificateKeyFile /app/domain2/certs/domain2.com.key
</VirtualHost>
(A configuração SSLCertificateChainFile
é obsoleta no Apache 2.4. As configurações SSLCA*
são para a autenticação cliente - se você não usa isso, você não precisa delas também.)