Como eu revogo o certificado padrão da serpente?

2

O Windows XP continua usando o certificado snakeoil com o qual o Ubuntu foi lançado, apesar do fato de nunca ter sido usado em nenhum host virtual.

O certificado está localizado em

/etc/ssl/certs/ssl-cert-snakeoil.pem

Não tenho certeza de onde está a chave. O único que eu vejo que parece plausível é em

/etc/ssl/private/ssl-cert-snakeoil.key

Acho que o certificado da CA está em

/etc/ssl/certs/ca-certificates.crt

mas não tenho certeza.

Até agora eu tentei vários comandos openssl, como

openssl ca -keyfile /etc/ssl/private/ssl-cert-snakeoil.key \
    -revoke /etc/ssl/certs/ssl-cert-snakeoil.pem \
    -cert /etc/ssl/certs/ca-certificates.crt

A saída daquela foi

Using configuration from /usr/lib/ssl/openssl.cnf
CA certificate and CA private key do not match
14805:error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:x509_cmp.c:406:

Estou completamente sem idéias. Qualquer ajuda é muito apreciada.

EDITAR

Aqui está o que aconteceu:

Eu comprei um certificado do GeoTrust, instalei, ativei o novo host virtual usando esse certificado e reiniciei o apache2. Em nenhum ponto da vida deste servidor, qualquer outro certificado já foi usado para proteger o tráfego da Web, sem falar no certificado snakeoil. O Windows Vista e versões superiores, bem como o OSX e todas as distribuições Linux que eu testei usam o certificado correto. O Windows XP usa o certificado snakeoil (no IE. Nenhum outro navegador nessa VM). Aqui estão algumas capturas de tela:

    
por John P Bloch 17.03.2012 / 00:10

2 respostas

6

Dada a informação extra que você forneceu, provavelmente será mais fácil começar outra resposta.

Não parece que o certificado "snakeoil" está sendo apresentado ao cliente Windows. O certificado "snakeoil" é gerado com um assunto de CN=Ubuntu , enquanto o certificado sendo apresentado à caixa do Windows tem um assunto de CN=Production . Então, estamos olhando para um terceiro certificado aqui.

Eu posso ver o mesmo certificado se eu me conectar ao seu servidor com s_client :

do OpenSSL
$ openssl s_client -connect portal.avendimedia.com:443
...
Certificate chain
 0 s:/CN=Production
   i:/CN=Production
...

O que eu acredito que está acontecendo é que você configurou o seu servidor web para usar a extensão Indicação do nome do servidor . Essa extensão é projetada para permitir que um servidor apresente certificados diferentes, dependendo do nome do host ao qual o cliente deseja se conectar.

Isso funciona bem na maioria dos navegadores modernos, mas não funciona nas versões do Internet Explorer no Windows anteriores ao Vista. Neste ponto, parece altamente improvável que a Microsoft atualize as bibliotecas SSL no Windows XP para suportar a extensão SNI.

Se você precisar que seu site funcione com o Internet Explorer no XP, veja se é possível remover as referências a esse outro host SSL em execução no mesmo endereço IP da sua configuração do Apache.

    
por James Henstridge 17.03.2012 / 03:57
4

O certificado "snakeoil" é gerado automaticamente quando o pacote ssl-cert é instalado.

É um certificado auto-assinado, portanto, revogá-lo não faz muito sentido. Você pode facilmente gerar um novo:

sudo make-ssl-cert generate-default-snakeoil --force-overwrite

Você provavelmente terá que reiniciar qualquer serviço que esteja usando esse certificado para que a alteração entre em vigor.

Quando você diz que o Windows XP continua usando o certificado, o que você quer dizer exatamente? Se você tivesse dito ao seu navegador nesse computador que confiasse no certificado particular gerado pelo seu sistema Ubuntu, seria uma questão simples revogar essa confiança na interface de gerenciamento de certificados do navegador.

    
por James Henstridge 17.03.2012 / 01:10