Vous vous méfiez d'une autorité de certification intermédiaire sous Linux?

18

De ce blog .

Les autorités de certification intermédiaires sont des certificats signés par une autorité de certification racine qui peut signer des certificats arbitraires pour n'importe quel site Web.

Ils sont tout aussi puissants que les autorités de certification racine, mais il n'y a pas de liste complète de celles auxquelles votre système fait confiance, car les autorités de certification racines peuvent en créer de nouvelles à volonté, et votre système leur fera confiance à première vue. Il y a des MILLIERS connectés en CT.

Ce mois-ci, un intéressant est apparu, généré apparemment en septembre 2015: «Blue Coat Public Services Intermediate CA», signé par Symantec. (Aucun certificat signé par cette autorité de certification n'a atteint les journaux CT ou Censys jusqu'à présent.)

J'ai pensé que ce serait une bonne occasion d'écrire comment démentir explicitement une autorité de certification intermédiaire qui serait autrement approuvée dans OS X. Cela n'empêchera pas l'autorité de certification racine de remettre un nouvel intermédiaire à la même organisation, mais mieux que rien.

Lorsque j'ai essayé les étapes du blog dans Ubuntu, je télécharge ce certificat https://crt.sh/?id=19538258 . Lorsque j'ouvre le fichier .crt, il est importé dans le trousseau de clés Gnome, mais je n'ai pas pu trouver de moyen de "ne pas faire confiance" au certificat après l'avoir importé.

raphael
la source

Réponses:

8

Juste pour rendre les choses difficiles, Linux a plus d'une bibliothèque pour travailler avec des certificats.

Si vous utilisez le NSS de Mozilla, vous pouvez vous méfier activement (leur terminologie) d'un certificat en utilisant l' option de certutil-t trustargs :

$ certutil -d <path to directory containing database> -M -t p -n "Blue Coat Public Services Intermediate CA"

Pour Firefox, <path to directory containing database>c'est généralement ~/.mozilla/firefox/<???>.profilelà que se <???>trouvent certains personnages d'aspect aléatoire. (certutil est par exemple dans le paquet libnss3-tools d'ubuntu)

La répartition est la suivante:

-M modifier la base de données

-t p définir la confiance sur Interdit

-n pour effectuer l'opération sur le certificat nommé

Même au sein de NSS, toutes les applications ne partagent pas la même base de données; vous devrez donc peut-être répéter ce processus. Par exemple, pour faire de même pour Chrome, remplacez le -d <path>par -d sql:.pki/nssdb/.

$ certutil -d sql:.pki/nssdb/ -M -t p -n "Blue Coat Public Services Intermediate CA"

Cependant, toutes les applications n'utilisent pas NSS, ce n'est donc pas une solution complète. Par exemple, je ne pense pas qu'il soit possible de le faire avec la bibliothèque OpenSSL.

Par conséquent, toute application qui utilise OpenSSL pour fournir sa construction de chaîne de certificats (TLS, IPSec, etc.) ferait confiance à une chaîne avec un certificat Blue Coat et il n'y a rien que vous puissiez faire à ce sujet à part supprimer l'autorité de certification racine qui l'a signée. votre magasin d'ancrage de confiance (ce qui serait idiot si l'on considère qu'il s'agit d'une autorité de certification racine Symantec car vous vous retrouvez sans méfiance sur la moitié d'Internet), tandis que les applications qui s'appuient sur NSS peuvent être configurées de manière plus granulaire pour se méfier de toute chaîne contenant le certificat Blue Coat. .

Par exemple, je crois qu'OpenVPN utilise OpenSSL comme bibliothèque de certificats, donc grand frère pourrait écouter votre trafic OpenVPN à votre insu si vous vous connectez à un fournisseur VPN commercial qui utilise OpenVPN. Si vous êtes vraiment préoccupé par cela, vérifiez qui est l'AC racine de votre fournisseur VPN commercial - si c'est Symantec / Verisign alors peut-être qu'il est temps de les abandonner pour quelqu'un d'autre?

Notez que SSH n'utilise pas de certificats X509, vous pouvez donc vous connecter et tunneler à l'aide de SSH sans vous soucier des attaques Blue Coat MITM.

garethTheRed
la source
J'ai mis à jour la question pour indiquer que lorsque j'ai double-cliqué sur le certificat, il a été importé dans le trousseau de clés gnome. J'ai réussi à trouver un moyen de l'importer dans Firefox dans ma réponse ci-dessous.
raphael
Pour OpenSSL, la suppression du certificat ne reviendrait-elle pas simplement à ne pas lui faire confiance? Il ne peut valider que les certificats qu'il connaît après tout.
Bratchley
1
@Bratchley - Que faire si le certificat suspect a été envoyé (comme il se doit) dans le cadre de la négociation TLS? Il serait tout simplement fiable, à moins qu'il n'y ait un moyen (comme c'est le cas avec Mozilla NSS, Windows et OS-X) d' insister sur le fait qu'il n'est toujours pas fiable.
garethTheRed
@garethTheRed Il se peut que je manque quelque chose, mais si la bibliothèque nécessite la validation du certificat, la création d'une liste de révocation de certificats ou la suppression de l'autorité de certification racine de confiance ne résoudraient-elles pas le problème? Qu'il s'agisse de certificats client ou serveur, il devrait toujours nécessiter une validation.
Bratchley
1
Oui. Bluecoat s'est vu délivrer un certificat CA par Verisign pour une utilisation dans les appareils homme au milieu. L'OP demande comment se méfier de ce certificat. Il s'agit donc de se méfier d'un certificat subordonné que l'autorité de certification émettrice supérieure (Root dans ce cas) ne révoquera pas, lorsque, comme vous le dites, vous ne voulez pas faire confiance à la racine (Verisign).
garethTheRed
0

Je ne peux pas encore commenter, donc je vais devoir commenter ici que sur Ubuntu Gnome 15.10, quand j'utilise l'approche de @ garethTheRed, j'obtiens:

~$ certutil -d ~/.mozilla/firefox/<directory>.default -M -t p -n "Blue Coat Public Services Intermediate CA" 
certutil: could not find certificate named "Blue Coat Public Services Intermediate CA": SEC_ERROR_BAD_DATABASE: security library: bad database.

~$ certutil -d sql:.pki/nssdb/ -M -t p -n "Blue Coat Public Services Intermediate CA"
certutil: could not find certificate named "Blue Coat Public Services Intermediate CA": SEC_ERROR_UNRECOGNIZED_OID: Unrecognized Object Identifier.

"Blue Coat Systems, Inc." ne fonctionne pas non plus.

(Il s'agit du certificat que j'ai importé: https://crt.sh/?id=19538258 )

Diagon
la source
Avez-vous d'abord téléchargé et importé le certificat?
raphael
Oui, j'ai importé celui-ci: crt.sh/?id=19538258 . (On dirait que je peux commenter maintenant! :)
Diagon
Je pense que vous ne pouvez commenter que votre propre réponse. Je n'ai pas encore essayé la procédure.
raphael
voir ma réponse ci
raphael
@raphael - J'ai essayé de modifier ci-dessous, pour vous faire savoir que: Alors que le lien ci - dessus décrit "-t p" comme "interdit (explicitement méfiant)", la page de manuel Ubuntu 15.10 le décrit comme "p - Homologue valide". J'espère que tu n'as pas fait la mauvaise chose.
Diagon