Apache - Certs SSL múltiplos anulando um ao outro

1

Eu tenho em um de nossos servidores dois SSL certs em execução para dois projetos, um dos quais é um SSL curinga emitido apenas para esse domínio, que chamarei domain2.com . domain1.com , o outro domínio tem o domínio emitido apenas para um subdomínio, chamado servidores .

Devido a domínio2 permitir que os usuários no projeto criem subdomínios, ele tem uma configuração do VirtualHost com esta aparência:

<VirtualHost *:443>
    <Directory /var/www/domain2>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
    #There's a SSL redirection here -
    #stackexchange network detected it as a URL shortener, so removed from question
    SSLEngine on
    SSLCertificateFile /app/domain2/certs/domain2.com.pem
    SSLCertificateKeyFile /app/domain2/certs/domain2.com.key
    SSLCertificateChainFile "/app/domain2/certs/fullchain.pem"
    SSLCACertificatePath "/app/domain2/certs/"
    SSLCACertificateFile "/app/domain2/certs/cacert.pem"
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/domain2
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Isso funciona bem, mas o SSL servers.domain1.com não está funcionando (que é emitido em letsencrypt, domain2.com é emitido com AlphaSSL

<VirtualHost servers.domain1.com:443>
    <Directory /app/corporate/mediaserver/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
    #There's a SSL redirection here -
    #stackexchange network detected it as a URL shortener, so removed from question
    SSLEngine on
    SSLCertificateFile /app/corporate/mediaserver/certs/[redacted]
    SSLCertificateKeyFile /app/corporate/mediaserver/certs/[redacted]
    SSLCACertificatePath /app/corporate/mediaserver/certs/[redacted]
    SSLCACertificateFile /app/corporate/mediaserver/certs/[redacted]
    ServerName servers.domain1.com
    ServerAdmin webmaster@localhost
    DocumentRoot /app/corporate/mediaserver/public
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Quando carrego server.domain1.com, ele tenta carregar o SSL do curinga, no entanto, se eu definir o <VirtualHost> para <VirtualHost domain1.com:443> e carregar o domínio1.com, ele carregará o SSL do servidor correto (servidores. virtualhost domain1.com apenas é ignorado).

    
por Phil Gibson 24.02.2018 / 17:42

1 resposta

1

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.)

    
por 24.02.2018 / 18:45