Jakie zaufane główne urzędy certyfikacji są domyślnie uwzględnione w systemie Android?

21

Wydaje się, że nie ma centralnego zasobu dla Androida, który wymienia Zaufane główne urzędy certyfikacji zawarte w systemie operacyjnym lub domyślnej przeglądarce ( powiązane pytanie w SO ), więc jak mogę dowiedzieć się, które są domyślnie uwzględnione w moim telefonie?

Biorąc pod uwagę liczbę certyfikatów głównych, które zostały naruszone, oraz liczbę fałszywych certyfikatów SSL utworzonych w ciągu ostatnich kilku lat, jest to problem dla każdego, kto polega na SSL dla bezpieczeństwa, ponieważ w przeciwnym razie nie będziesz wiedział, czy chcesz usunąć wszelkie zaufane urzędy certyfikacji .

(nie wyświetla mojej wersji producenta lub systemu operacyjnego, ponieważ szukam ogólnego zasobu lub rozwiązania, które powinno mieć zastosowanie na dowolnym urządzeniu)

GAThrawn
źródło
1
Użyłem tej aplikacji (wymagany root), aby wyświetlić i usunąć poszczególne certyfikaty root: CACertMan lub w Play Store . Projekt guradian utrzymuje również zmodyfikowaną wersję standardowego magazynu kluczy: github.com/guardianproject/cacert
ce4
Link do Sklepu Play w poprzednim komentarzu jest nieprawidłowy - Oto właściwy Sklep Play
Michael Kohne
1
@Michael: Dzięki za podpowiedź, wygląda na to, że zepsułem mój bufor kopiuj / wklej (pozostawiając komentarz, ponieważ ty i Eldarerathis podaliście poprawny
kod

Odpowiedzi:

17

W ICS lub nowszym możesz to sprawdzić w ustawieniach . Przejdź do strony, Settings->Security->Trusted Credentialsaby zobaczyć listę wszystkich zaufanych urzędów certyfikacji, rozdzielonych według tego, czy zostały one dołączone do systemu, czy zainstalowane przez użytkownika.

Wcześniejsze wersje Androida przechowują swoje certyfikaty /system/etc/securityw zaszyfrowanym pakiecie o nazwie, cacerts.bksktórą można wyodrębnić za pomocą Bouncy Castle i keytoolprogramu. Podsumowując, najpierw wyciągnij pakiet za pomocą adb(potrzebujesz powłoki roota), a następnie możesz użyć Bouncy Castle, aby wyświetlić zawartość pakietu:

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

Istnieje również co najmniej jedna aplikacja, którą możesz wypróbować, jeśli nie chcesz używać powłoki: CACertMan (wymaga roota do zmodyfikowania listy, ale powinien umożliwiać przeglądanie listy bez roota). Wydaje mi się, że stało się tak z powodu fiaska DigiNotar, ponieważ nie było wówczas żadnych łatwych sposobów na unieważnienie certyfikatu. Ponieważ certyfikaty są przechowywane inaczej w ICS, a później ta aplikacja będzie działać tylko na urządzeniach z Gingerbread (lub wcześniejszymi), ale i tak jest przestarzała na ICS / JB.

eldarerathis
źródło
Tak, przyszło z powodu DigiNotar. Zrootowanie jest wymagane tylko do edycji urzędów certyfikacji (np. Urzędów stanu chińskiego), a nie do przeglądania, jak sądzę (IIRC).
ce4
@ ce4: Nie pamiętam, czy potrzebujesz roota, aby przeglądać za pomocą CACertMan czy nie - sprawdzę to naprawdę szybko. Aktualizacja: Myślę, że masz rację, mogę je wymienić, jeśli odmówię dostępu do konta root, po prostu nie mogę zapisać zmodyfikowanej listy. Wyjaśnię to.
eldarerathis
Czy istnieje (zrootowany) sposób edycji / dodawania certyfikatów z powłoki? Metoda ustawień twierdzi, że na moim tablecie powiodło się, ale certyfikaty nie zostały faktycznie zainstalowane.
Michael