O Apache atende a um certificado SSL antigo

3

Estou hospedando uma página da Web com o Apache em um Raspberry Pi (Debian) e não consigo fazer com que o servidor emita o certificado atual. Gerei um certificado SSL autoassinado em /home/pi/ssl/ com:

openssl req -new -sha256 -x509 -nodes -days 365 -out example.com.pem -keyout example.com.key

O Apache pesquisa o par de arquivos .pem e .key do arquivo /etc/apache2/sites-enabled/owncloud.conf , que contém:

SSLCertificateFile    /home/pi/ssl/example.com.pem
SSLCertificateKeyFile /home/pi/ssl/example.com.key

Quando eu excluo esses arquivos e reinicio o Apache, recebo o erro [FAIL] Reloading web server config: apache2 failed! . Esse erro não acontece ao reiniciar depois que um novo par de arquivos de certificado é gerado, portanto, o Apache parece estar chamando o certificado.

No entanto, o certificado fornecido nos navegadores (janelas privadas do Chrome Incognito ou FF / Safari e até mesmo um navegador em um computador que certamente nunca solicitaram o domínio anteriormente) é um certificado antigo gerado há um mês - veja abaixo:

Alguma idéia do porquê isso está acontecendo?

    
por geotheory 20.05.2015 / 21:14

2 respostas

2

Acontece que o certificado que está sendo emitido foi, por algum motivo, o certificado "snakeoil" padrão do Apache. Eu estabeleci isso por:

grep -i -r "SSLCertificateChainFile" /etc/apache2/

.. que retornou 2 linhas do arquivo /etc/apache2/sites-available/default-ssl que referenciava o certificado snakeoil. Eu comentei essas linhas e agora o navegador retorna o certificado personalizado.

    
por 21.05.2015 / 21:25
0

Uma fonte comum de tais problemas é várias instâncias em execução do Apache. As alterações de configuração são selecionadas por um processo que você (re) inicia, mas a solicitação é atendida por um processo antigo que está sendo executado com a configuração antiga.

Pare o serviço:

service apache2 stop

Verifique se o site ainda está acessível. Se sim, então você identificou a causa.

Agora corra

ps aux | grep apache

Ele fornecerá a lista de processos em execução do apache2 e seus PIDs. Mate todos eles (Note, este comando também pode retornar processos não relacionados com o Apache em seu nome / usuário, etc., como o Apache Tomcat, você pode não querer matá-los.)

kill <pid>

Execute o comando ps aux novamente e garanta que os processos não estejam mais sendo executados.

Verifique novamente se o site está acessível. Não deveria ser.

Agora inicie o serviço do apache

service apache2 start

Verifique se o novo certificado está sendo veiculado.

Se você não quer matar processos, você pode reiniciar o sistema. Isso terá o mesmo efeito.

    
por 19.04.2017 / 18:24