Erro "O servidor deve reconhecer SSL, mas não possui certificado configurado [Dica: SSLCertificateFile]"

21

Após atualizar recentemente o Apache2 para a versão 2.2.31, encontrei um comportamento estranho na configuração do SSL VirtualHost.

Alguns dos sites que estou hospedando estavam mostrando o certificado para o host padrão, mesmo que o cliente estivesse Server Name Identificationciente, e isso aconteceu apenas com alguns deles. Isso mostra como o aviso de passaporte comum do Firefox / Chrome sobre você ser possivelmente enganado se estiver navegando no seu home banking, mas esse simplesmente não foi o caso.

Para ficar claro, se o servidor host.hostingdomain.orgtiver seu próprio SSL, tentando acessar o https://www.hostedsite.orgcertificado de relatórios host.hostingdomain.org, mas alguns https://www.hostedsite.merelataram o certificado correto.

Todos os sites são hospedados no mesmo endereço IP, na porta 443. A verdade é que o VirtualHosting funciona no lado HTTP e redireciona automaticamente os clientes compatíveis com SNI para SSL, portanto, é compatível com os clientes que não conhecem SNI.

Examinando logs de erro para os VirtualHosts ofensivos, mostrados o texto a seguir

[Tue Dec 25 16:02:45 2012] [error] Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/path/to/www.site.org.conf:20)

e, de fato, o vhost foi configurado corretamente com SSLCertificateFile.

A questão é óbvia: como consertar isso?

usr-local-ΕΨΗΕΛΩΝ
fonte

Respostas:

38

Acontece que poderia ser um bug na versão mais recente do Apache.

Solução 1: faça o downgrade para o último estável

Solução 2: editar listen.conf

Substitua Listen *:443(ou de Listen 443acordo com a sua configuração) porListen *:443 http

Crédito

usr-local-ΕΨΗΕΛΩΝ
fonte
1
Obrigado por apontar isto! Você me salvou de pensar demais ... Eu me pergunto por que o apache está dificultando a vida !?
Tftd
2
Solução 2: que deveria ser httpd.conf não listen.conf
ZZAPPER
1
Observe que isso aconteceu comigo esta manhã ... acabei precisando adicionar o "http" ao lin de escuta em /etc/httpd/conf.d/ssl.conf - oh, não precisei fazer o downgrade ...
Scott Scott
As soluções são alternativas, você não precisa fazer o downgrade se adicionar listen.conf
usr-local-ΕΨΗΕΛΩΝ
10

Eu tive o mesmo problema exato, e o que funcionou para mim foi incrivelmente simples

edite o /etc/apache2/ports.conf (para ubuntu ou httpd.conf)

altere "Listen 443" para "Listen 443 http" em ssl_module

Justiça O.
fonte
Isso já está na resposta aceita.
Sven
2
A resposta aceita parece desatualizada. Esta resposta foi mais útil e precisa. +1
Parag 26/03
Esta resposta é aplicável ao apache na minha pilha de lâmpadas apache2.4, ubuntu. Outra resposta é "listen.conf" - deve ser ports.conf
Nick
2

Outra solução para isso é garantir que todos os seus: 443 vhosts incluam a configuração TLS.

Este problema foi introduzido recentemente no Debian wheezy e eu obtive a solução em http://blog.noizeramp.com/2010/10/03/apache-2-and-ssl-configuration/ .

François Marier
fonte
Este foi o meu problema. Dupliquei um vhost no meu, httpd.confmas não incluí as linhas que especificam a configuração do TLS. Adicionar as várias configurações de TLS novamente (SSLEngine, SSLCipherSuite, SSLCertificateFile e SSLCertificateKeyFile) resolveu o problema.
Rinogo 12/10