“O servidor deve estar ciente de SSL, mas não possui certificado configurado”

5

Ubuntu 14.04 Apache 2.4.7 com mod_ssl

Estou tentando instalar um certificado de domínio (único). Por algum motivo, o apache não o aceita e se recusa a iniciar se o site relacionado estiver habilitado. Apesar do pesado googling, não consigo entender as mensagens de erro. Por que diz que não há certificado configurado? Ele está configurado no virtualhost e aponta para o arquivo crt no local correto.

Error_log

[Tue May 19 18:11:08.123857 2015] [ssl:emerg] [pid 10040:tid 140146576725888] AH02240: Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] ((null):0)
[Tue May 19 18:11:08.123894 2015] [ssl:emerg] [pid 10040:tid 140146576725888] AH02312: Fatal error initialising mod_ssl, exiting.

O que tentei:

  • sintaxe do host virtual com verificação dupla e caminho para o certificado e a chave
  • O certificado
  • doublechecked é chmoded 644 e a chave é chmoded 600
  • O certificado
  • doublechecked é válido. Redownload do meu provedor. Abri no editor

Aqui está o virtualhost

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerName www.domain.tld
        RedirectMatch (.*) https://domain.tld$1
    </VirtualHost>

    <VirtualHost _default_:443>
        ServerAdmin admin@localhost
        ServerName domain.tld
        DocumentRoot /home/user/www/domain.tld/public

        # SSL CERTIFICATES

        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/domain.tld.crt
        SSLCertificateKeyFile /etc/ssl/private/domain.tld.key
        SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem
        SSLVerifyClient None
        # SSLProtocol all -SSLv2 -SSLv3

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                        SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                        SSLOptions +StdEnvVars
        </Directory>
        BrowserMatch "MSIE [2-6]" \
                        nokeepalive ssl-unclean-shutdown \
                        downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown


        <Directory /home/user/www/domain.tld/public>
            Require all granted
        </Directory>

        LogLevel error
        ErrorLog ${APACHE_LOG_DIR}/user-eu-error.log
        CustomLog ${APACHE_LOG_DIR}/user-eu-access.log combined

        ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/user/www/domain.tld/public/$1

        ErrorDocument 404 /missing.php

        # Mod_status
        <location /server-status> 
            SetHandler server-status 
            Order Allow,Deny
            Allow from all
        </location>
    </VirtualHost>
</IfModule>

Alguma sugestão sobre o que poderia estar errado?

    
por pixeline 19.05.2015 / 18:17

3 respostas

6

Acho que o eltrai está no caminho certo, mas eu removerei o primeiro <VirtualHost> e use ServerAlias no segundo

<VirtualHost _default_:443>
    ServerAdmin admin@localhost
    ServerName domain.tld
    ServerAlias www.domain.tld

Você pode adicionar seu RedirectMatch mais tarde nesse mesmo bloco para redirecionar de www para não.

    
por 19.05.2015 / 19:46
4

Seu primeiro virtualhost (para o www.domain.tld) não tem SSL ativado, mesmo que esteja na porta 443.

Você precisa adicionar SSLEngine, SSLCertificateFile, ... como no segundo, caso contrário, nenhum acesso https será possível para www.domain.tld.

Eu não tenho muita certeza se isso deve causar uma recusa simples, no entanto ...

    
por 19.05.2015 / 18:30
4

Mais uma coisa a verificar que não foi mencionada nas respostas anteriores.

Se você tem "SSLEngine on" em qualquer lugar na sua configuração global (basicamente em qualquer lugar fora do VirtualHost e blocos similares) e você não tem uma diretiva SSLCertificateFile também definida globalmente, o apache vai se engasgar com isso antes mesmo de chegar ao virtual host e você receberá este erro.

A mensagem de erro está correta, mas não menciona QUAL servidor não possui certificado.

    
por 02.10.2015 / 23:11