Apache serve um certificado SSL antigo

Apache serve um certificado SSL antigo

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

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

O Apache procura o par de arquivos .peme em file , que contém:.key/etc/apache2/sites-enabled/owncloud.conf

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

Quando excluo esses arquivos e reinicio o Apache, recebo um erro [FAIL] Reloading web server config: apache2 failed!. Este erro não ocorre ao reiniciar após a geração de um novo par de arquivos de certificado, então o Apache parece estar chamando o certificado.

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

detalhes do certificado antigo

Alguma idéia de por que isso está acontecendo?

Responder1

Acontece que o certificado emitido era, 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-sslque fazia referência ao certificado Snakeoil. Comentei essas linhas e o navegador agora retorna o certificado personalizado.

Responder2

Uma fonte comum de tais problemas são múltiplas instâncias em execução do Apache. As alterações de configuração são captadas por um processo que você (re) inicia, mas a solicitação é atendida por um processo antigo que está sendo executado com 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 lhe dará uma lista de processos do Apache2 em execução e seus PIDs. Mate todos eles (observe que este comando também pode retornar processos não relacionados ao Apache em seu nome/usuário, etc., como Apache Tomcat, talvez você não queira matá-los.)

kill <pid>

Execute ps aux novamente e certifique-se de que os processos não estejam mais em execução.

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

Agora inicie o serviço Apache

service apache2 start

Verifique se o novo certificado está sendo veiculado.

Se não quiser encerrar processos, você pode reinicializar o sistema. Terá o mesmo efeito.

informação relacionada