
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 .pem
e 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:
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-ssl
que 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.