web-dev-qa-db-fra.com

Comment révoquer le certificat snakeoil par défaut?

Windows XP continue à utiliser le certificat snakeoil fourni par Ubuntu, même s'il n'a jamais été utilisé dans un hôte virtuel.

Le certificat est situé à

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

Je ne sais pas où est la clé. Le seul que je vois qui semble plausible est à

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

Je pense que le certificat de CA est à

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

mais je ne suis pas sûr.

Jusqu'à présent, j'ai essayé diverses commandes openssl, telles que

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

La sortie de celui-là était

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:

Je suis tout à court d'idées. Toute aide est grandement appréciée.

MODIFIER

Voici ce qui s'est passé:

J'ai acheté un certificat de GeoTrust, je l'ai installé, j'ai activé le nouvel hôte virtuel à l'aide de ce certificat et j'ai redémarré Apache2. À aucun moment de la vie de ce serveur, aucun autre certificat n'a été utilisé pour sécuriser le trafic Web, sans parler du certificat snakeoil. Windows Vista et supérieur, ainsi que OSX et toutes les distributions Linux que j'ai testées utilisent le bon certificat. Windows XP utilise le certificat snakeoil (dans IE. Aucun autre navigateur sur cette machine virtuelle). Voici quelques captures d'écran:

The correct certificate loaded in Chrome

The incorrect certificate loaded in IE 8 on Windows XP

2
John P Bloch

Compte tenu des informations supplémentaires que vous avez fournies, il est probablement plus facile pour moi de commencer une autre réponse.

Il ne semble pas que le certificat factice "snakeoil" soit présenté au client Windows. Le certificat "snakeoil" est généré avec un objet de CN=Ubuntu, tandis que le certificat présenté à la boîte de dialogue Windows a un objet de CN=Production. Nous examinons donc un troisième certificat ici.

Je peux voir le même certificat si je me connecte à votre serveur avec le s_client d'OpenSSL:

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

Ce que je pense, c'est que vous avez configuré votre serveur Web pour utiliser l'extension Indication du nom du serveur . Cette extension est conçue pour permettre à un serveur de présenter différents certificats en fonction du nom d'hôte auquel le client souhaite se connecter.

Cela fonctionne bien dans la plupart des navigateurs modernes, mais ne fonctionne pas dans Internet Explorer sur les versions de Windows antérieures à Vista. À ce stade, il semble hautement improbable que Microsoft mette à jour les bibliothèques SSL sous Windows XP afin de prendre en charge l'extension SNI.

Si vous souhaitez que votre site fonctionne avec Internet Explorer sous XP, vérifiez si vous pouvez supprimer les références à cet autre hôte SSL s'exécutant sur la même adresse IP à partir de votre configuration Apache.

6
James Henstridge

Le certificat "snakeoil" est généré automatiquement lorsque le package ssl-cert est installé.

C'est un certificat auto-signé, donc le révoquer n'a pas beaucoup de sens. Vous pouvez facilement en générer un nouveau si:

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

Vous devrez probablement redémarrer tout service utilisant ce certificat pour que la modification soit prise en compte.

Lorsque vous dites que Windows XP continue à utiliser le certificat, que voulez-vous dire exactement? Si vous aviez demandé à votre navigateur Web sur cet ordinateur de faire confiance au certificat snakeoil généré par votre système Ubuntu, il devrait être simple de révoquer cette confiance dans l'interface de gestion des certificats du navigateur.

4
James Henstridge