O Apache parece estar usando o certificado expirado antigo, mesmo que o novo esteja instalado

12

Apache 2.2.3 / mod_ssl / CentOS 5.5 VPS

Nosso certificado expirou em 2011-10-06 e, embora aparentemente tenhamos instalado o novo corretamente, navegando até o site ainda mostra um certificado expirado! Eu já tentei excluir o cache do meu navegador e usando vários navegadores diferentes. Linhas relevantes do arquivo ssl.conf (excluí as que foram comentadas):

Listen 127.0.0.1:443
SSLSessionCache         shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout  300
# Note - I tried disabling SSLSessionCache with the "none" setting but it didn't help.
<VirtualHost 127.0.0.1:443>
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /var/certs/gentlemanjoe.com/new2011/gentlemanjoe.com.crt
SSLCertificateKeyFile /var/certs/gentlemanjoe.com/new2011/gentlemanjoe.com.key
SSLCertificateChainFile /var/certs/gentlemanjoe.com/new2011/gd_bundle.crt
SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
ServerAdmin [email protected]
DocumentRoot /var/www/gentlemanjoe.com
ServerName gentlemanjoe.com
<Directory /var/www/gentlemanjoe.com>
    AllowOverride All
    Order deny,allow
    allow from all
</Directory>          
</VirtualHost>

Coisas que eu verifiquei

Primeiro eu tentei mover os arquivos antigos de certificados e chaves para uma pasta completamente diferente para ter certeza de que o Apache ainda não os estivesse pegando de alguma forma. Nada mudou. Por diversão, tentei temporariamente renomear os novos arquivos de certificados e chaves, e o Apache obedientemente reclamou e se recusou a iniciar.

Depois tentei me certificar de que não estava sendo enganado por editar o arquivo de configuração errado. Usando "locate" eu encontrei apenas um arquivo httpd.conf em /etc/httpd/conf/httpd.conf. Eu também usei "locate" para verificar se existe apenas um arquivo ssl.conf, /etc/httpd/conf.d/ssl.conf. O arquivo-chave é o que eu gero usando o OpenSSL, seguindo as instruções fornecidas pelo GoDaddy para gerar o CSR.

Verifiquei que estou trabalhando com o site certo fazendo o upload de um arquivo test.html para a pasta /var/www/gentlemanjoe.com e verificando se posso navegar até ele. Mas, se eu tentar visualizar o arquivo de teste em HTTPS, recebo o mesmo aviso de expiração de certificado.

Verifiquei se o certificado em si tem a data de validade correta:

openssl x509 -in /var/certs/gentlemanjoe.com/new2011/gentlemanjoe.com.crt -noout -text

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            07:e7:49:69:97:96:16
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., OU=http://certificates.godaddy.com/repository, CN=Go Daddy Secure Certification Authority/serialNumber=07969287
        Validity
            Not Before: Oct 21 17:37:55 2011 GMT
            Not After : Oct  8 21:16:03 2013 GMT
        Subject: C=CA, ST=BC, L=Burnaby, O=Diamond Bailey Consolidated Commercial Services Ltd, OU= , CN=www.gentlemanjoe.com

Eu tentei recodificar o certificado no GoDaddy com um novo CSR e tudo parece funcionar, mas obtenho o mesmo resultado no navegador.

Possível pista 1

Sempre que eu faço "apachectl restart", vejo isso no arquivo error_log:

[Fri Oct 21 18:03:33 2011] [notice] SIGHUP received.  Attempting to restart
[Fri Oct 21 18:03:33 2011] [notice] Digest: generating secret for digest authentication ...
[Fri Oct 21 18:03:33 2011] [notice] Digest: done
[Fri Oct 21 18:03:33 2011] [info] APR LDAP: Built with OpenLDAP LDAP SDK
[Fri Oct 21 18:03:33 2011] [info] LDAP: SSL support available
[Fri Oct 21 18:03:33 2011] [info] Init: Seeding PRNG with 256 bytes of entropy
[Fri Oct 21 18:03:33 2011] [info] Init: Generating temporary RSA private keys (512/1024 bits)
[Fri Oct 21 18:03:33 2011] [info] Init: Generating temporary DH parameters (512/1024 bits)
[Fri Oct 21 18:03:33 2011] [info] Shared memory session cache initialised
[Fri Oct 21 18:03:33 2011] [info] Init: Initializing (virtual) servers for SSL
[Fri Oct 21 18:03:33 2011] [warn] RSA server certificate CommonName (CN) 'www.gentlemanjoe.com' does NOT match server name!?
[Fri Oct 21 18:03:33 2011] [info] Server: Apache/2.2.3, Interface: mod_ssl/2.2.3, Library: OpenSSL/0.9.8e-fips-rhel5
[Fri Oct 21 18:03:34 2011] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations
[Fri Oct 21 18:03:34 2011] [info] Server built: Aug 30 2010 12:28:40

Os técnicos da GoDaddy me dizem que o www x não-www não deve importar, e tenho a tendência de concordar, já que o aviso de segurança no meu navegador não é reclamando de incompatibilidade de nome de servidor, mas uma expiração , indicando que o certificado antigo ainda está sendo carregado de alguma forma.

Possível indício nº 2

O cabeçalho de resposta do HTTP Server para o link diz "Andromeda" em vez de "Apache". Isso parece estranho para mim desde que meu Google de "Andromeda" mostra um projeto de tipo servidor de mídia, que não seria instalado neste servidor (mas eu não posso dizer isso com certeza, já que eu não configurei nada disso , o administrador / desenvolvedor habitual está de férias e eu estou apenas ajudando um amigo com o site dele.) Além disso, o arquivo httpd.conf não contém a string "Andromeda" indicando que ele não foi modificado para cuspir. Então, pode ser a plataforma de e-commerce Magento que ele está usando, mas qual seria o sentido de substituir o cabeçalho de resposta padrão do Apache?

    
por Jordan Rieger 22.10.2011 / 01:29

2 respostas

15

Algo está na frente do Apache. Confira essa configuração:

Listen 127.0.0.1:443
....
<VirtualHost 127.0.0.1:443>

Ele está escutando apenas no host local, portanto, os clientes da Internet não estão acessando esse serviço diretamente. Eles provavelmente estão sendo intermediados por proxy.

Para verificar se o Apache está carregando o certificado certo, acesse o serviço diretamente no ouvinte do Apache: openssl s_client -connect 127.0.0.1:443 -showcerts

Não tenho certeza sobre o cabeçalho do Andromeda, então, vamos encontrar o processo: lsof -i .

O Apache terá 127.0.0.1:443 , enquanto outro serviço tem 0.0.0.0:443 (ou o endereço público do VPS :443 ) - é esse que precisa do novo certificado.

    
por 22.10.2011 / 02:40
0

Uma fonte comum deste problema é 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:22