Quelles autorités de certification racine de confiance sont incluses dans Android par défaut?

21

Il ne semble pas y avoir de ressource Android centrale qui répertorie les autorités de certification racines de confiance incluses dans le système d'exploitation ou le navigateur par défaut ( question connexe sur SO ), alors comment puis-je savoir celles qui sont incluses sur mon téléphone par défaut?

Avec le nombre de certificats racine qui ont été compromis et le nombre de certificats SSL frauduleux créés au cours des deux dernières années, c'est un problème pour quiconque s'appuie sur SSL pour la sécurité, sinon vous ne saurez pas si vous souhaitez supprimer toute autorité de certification de confiance .

(ne pas répertorier mon fabricant ou ma version de système d'exploitation car je recherche une ressource ou une solution générique qui devrait être applicable à n'importe quel appareil)

GAThrawn
la source
1
J'ai utilisé cette application (root requis) pour répertorier et supprimer les certificats racine individuels: CACertMan ou sur Play Store . Le projet guradian maintient également une version éditée du magasin de clés
ce4
Le lien Play Store dans le commentaire précédent est erroné - Voici le bon Play Store
Michael Kohne
1
@Michael: Merci pour l'astuce, il semble que j'ai foiré mon tampon de copier / coller (en laissant le commentaire, car vous et eldarerathis avez tous deux fourni le bon)
ce4

Réponses:

17

Sur ICS ou version ultérieure, vous pouvez vérifier cela dans vos paramètres . Accédez à Settings->Security->Trusted Credentialspour voir une liste de toutes vos autorités de certification approuvées, séparées selon qu'elles ont été incluses dans le système ou installées par l'utilisateur.

Les versions antérieures d'Android conservent leurs certificats /system/etc/securitydans un ensemble chiffré nommé cacerts.bksque vous pouvez extraire à l'aide de Bouncy Castle et du keytoolprogramme. Le résumé consiste à tirer d'abord le bundle en utilisant adb(vous avez besoin d'un shell racine) puis vous pouvez utiliser Bouncy Castle pour lister le contenu du bundle:

shell~$ adb pull /system/etc/security/cacerts.bks`
shell~$ keytool -keystore cacerts.bks -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass changeit -v -list

Il y a aussi au moins une application que vous pouvez essayer si vous préférez ne pas utiliser le shell: CACertMan (nécessite root pour modifier la liste, mais devrait vous permettre d'afficher la liste sans root). Je crois que cela est dû au fiasco de DigiNotar car il n'y avait pas de moyen particulièrement facile pour un utilisateur de révoquer le certificat à l'époque. Étant donné que les certificats sont stockés différemment sur ICS et plus tard, cette application ne fonctionnera que sur les appareils exécutant Gingerbread (ou version antérieure), mais elle est de toute façon obsolète sur ICS / JB.

eldarerathis
la source
Oui, c'est venu à cause de DigiNotar. La racine n'est nécessaire que pour éditer les autorités de certification (par exemple les autorités de certification chinoises), pas pour les visualiser je suppose (IIRC).
ce4
@ ce4: Je ne me souviens pas si vous avez besoin de root juste pour naviguer avec CACertMan ou non - je vérifierai cela très rapidement. Mise à jour: pensez que vous avez raison, je peux les répertorier si je leur refuse l'accès root, je ne peux tout simplement pas enregistrer une liste modifiée. Je vais clarifier cela.
eldarerathis
Existe-t-il un moyen (enraciné) de modifier / ajouter des certificats à partir du shell? La méthode Settings revendique le succès sur ma tablette, mais les certificats ne sont pas réellement installés.
Michael