O certificado do servidor NÃO inclui um ID que corresponda ao nome do servidor

3

Nosso servidor foi atualizado ontem então agora ele tem um Ubuntu mais atualizado, Apache 2.4.10, PHP etc. Depois que eu coloquei tudo de volta, o Apache começou a reclamar sobre minha configuração.

O servidor hospeda um site que está usando curingas para conteúdo dinâmico para diferentes clientes e contém três certificados curinga para diferentes serviços para esses clientes.

Uma parte da configuração com um curinga se parece com isso:

<VirtualHost *:80>
    ServerName *.dashboard.example.com
    ServerAlias *.dashboard.example.com
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(.+)\.dashboard.example\.com$
    RewriteRule ^/(.*)$ https://%1.dashboard.example.com/$1 [R=302,L]
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName *.dashboard.example.com
    ServerAlias *.dashboard.example.com
    DocumentRoot /var/www/dashboard.example.com/web

    <Directory />
        AllowOverride All
        Options -Indexes +MultiViews +FollowSymLinks
        Order Deny,Allow
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/dashboard.example.com-error.log
    CustomLog /var/log/apache2/dashboard.example.com-access.log combined

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/bundle_wc_dashboard_example_com.crt
    SSLCertificateKeyFile /etc/ssl/certs/wildcard_dashboard_example_com.key
</VirtualHost>

Observe que estou usando um pacote como um arquivo de certificado. Usar arquivos separados para os arquivos intermediários e raiz resulta em um resultado ainda pior ao usar verificações de SSL. O certificado GeoTrust não é reconhecido. Meu fornecedor de certificado SSL explicou a partir do Apache 2.4, os certificados devem ser pacotes.

Então, isso não funciona para mim:

SSLCertificateFile /etc/ssl/certs/wildcard_dashboard_example_com.crt
SSLCertificateKeyFile /etc/ssl/certs/wildcard_dashboard_example_com.key
SSLCertificateChainFile /etc/ssl/certs/GeoTrust_Global_CA.crt
SSLCertificateChainFile /etc/ssl/certs/RapidSSL_SHA256_CA_G3.crt

O acima, no entanto, funcionou no Apache 2.2.

Quando tento iniciar o apache, ele reclama do valor ServerName :

[FAIL] Reloading web server: apache2 failed!
[warn] The apache2 configtest failed. Not doing anything. ... (warning).
Output of config test was:
AH00526: Syntax error on line 42 of /etc/apache2/sites-enabled/3-production.conf:
Invalid ServerName "*.dashboard.example.com" use ServerAlias to set multiple server names.
Action 'configtest' failed.
The Apache error log may have more information.

Então parece que o asterisco não é permitido. Se eu remover o asterisco, o apache será iniciado, mas um erro será exibido no log de erros do domínio:

Fri Mar 11 10:32:13.821304 2016] [ssl:warn] [pid 18019] AH01909: dashboard.example.com:443:0 server certificate does NOT include an ID which matches the server name

De outras fontes, encontrei o seguinte comando, que deve ser usado para determinar o CommonName que deve ser usado como ServerName:

openssl x509 -in wildcard_dashboard_example_com.crt -noout -subject

Que retorna:

subject= /CN=*.dashboard.example.com

Meu navegador mostra um bloqueio verde, mas as verificações de SSL reclamam que estou perdendo um arquivo de certificado intermediário / de cadeia (veja a captura de tela). O mesmo problema ocorre no mesmo servidor para outros dois domínios curinga e um subdomínio normal que não é um curinga. Até mesmo o apache reivindica server certificate does NOT include an ID which matches the server name . O site está usando curingas para conteúdo dinâmico para diferentes clientes e contém três certificados curinga para diferentes serviços para esses clientes.

Alguma ideia de como posso consertar isso? Qualquer outra coisa que eu possa fazer para verificar o que está errado?

Atualização de 18 de maio de 2016

Eu consertei isso no início de abril. Parece que a empresa que forneceu os certificados SSL nos deu um certificado raiz antigo. Eles me enviaram um zip contendo um certificado em conjunto e arquivos de certificado separados. Eu tentei instalar essas várias vezes. Então, comparei o conteúdo de todos os arquivos manualmente com outros sites que funcionaram. Percebi a diferença e baixei novamente os certificados manualmente do site deles.

O certificado GeoTrust foi diferente. Depois de instalar tudo funcionou como um encanto. Meu chefe me disse que ele iria contatá-los sobre isso, mas infelizmente isso nunca aconteceu. Feliz está trabalhando agora mesmo.

    
por ar34z 11.03.2016 / 10:42

1 resposta

3

Se o certificado for válido apenas para *.dashboard.example.com , ele não é válido para dashboard.example.com (o último não corresponde ao curinga).

ServerName é usado para especificar o nome canônico (um nome único) para o site.
Os nomes e curingas adicionais só vão para ServerAlias .

A configuração, por exemplo, ServerName foo.dashboard.example.com deve funcionar (em combinação com o ServerAlias que você tem).


Em relação aos problemas mencionados com a cadeia de certificados, estes não parecem estar relacionados com a questão em si.
Eu sugeriria garantir que todos os certificados intermediários necessários sejam agrupados corretamente.

Como você observou, SSLCertificateChainFile é obsoleto, não é necessário usar você pode colocar todos os certificados em SSLCertificateFile .

O teste SSL Labs da Qualy pode ser usado para verificar se algum certificado intermediário está faltando ou se há outros problemas.

    
por 11.03.2016 / 11:51