Sie sind inzwischen überall. Zertifikate! Für mich derselbe Fluch wie ICC-Profile. Aber naja, man muss damit leben lernen.

Letztens wollte ich ein Zertifikat, welches ich unter großen Mühen endlich erstellt hatte, auf mein Handy bringen. Am Computer zieht man es nur in das Schlüsselbund-Dienstprogramm, das hatte ich mir unter Android nicht schwieriger vorgestellt. Denkste!

Dreh- und Angelpunkt ist der Bildschirm "Sicherheit" der Systemeinstellungen. Freudig springt der Punkt "Vom Speicher installieren" ins Auge.

Einmal darauf getippt wollte das Handy das Passwort meines Anmeldespeichers wissen. War mir nicht bewusst, schon einmal etwas von einem Anmeldespeicher und dessen Passwort gehört zu haben und die sonst üblichen Passworte führten auch immer wieder zu einer Fehlermeldung, bis irgendwann die Warnung erschien, dass der Anmeldespeicher nun gelöscht werden würde.
Kein Problem. Wenn ich da nicht ran komme und nicht wusste, dass ich einen Anmeldespeicher habe, kann es von mir aus gelöscht werden.

Leider ging es danach grad so weiter mit Abfragen über ein mir unbekanntes Passwort.

 
Im Endeffekt muss es sich um einen Bug gehandelt haben, denn eigentlich sollte an dieser Stelle gar nicht nach einem nicht vergebenen Passwort gefragt werden, sondern stattdessen die rechts abgebildete Warnung erscheinen: Ich hatte gar kein PIN oder Passwort für die Display-Sperre eingerichtet.
Das ist eine Grundvoraussetzung, den Anmeldespeicher nutzen zu können, was wiederum eine Grundvoraussetzung dafür ist, Benutzer-Zertifikate installieren zu können. Zum Glück brauchen Sie nicht noch eine beglaubigte Kopie meiner Lebensversicherung.

Es lassen sich also nur Zertifikate installieren, wenn man die Bildschirmsperre durch PIN, Passwort oder Muster eingerichtet hat. Ärgerlich – so etwas wollte ich noch nie. Ich entsperre mein Handy täglich an die hundert Mal (durch einen kurzen Wisch aufs Schloss-Icon). Da will ich nicht jedes Mal ein PIN, Passwort oder Muster eingeben. Das ist mir einfach zu blöd. Kommt mir das Handy abhanden, dann werde ich Gebrauch von der Fern-Lösch-Funktion machen. Dass ein möglicher Dieb zwischenzeitlich die Gelegenheit hat, in meine WhatsApp-Chats rein zu schauen, das nehme ich in Kauf. Das hat mir in den letzten Jahren einiges an Tipp- und/oder Wischarbeit gespart.

Zertifikat trotzdem installieren

Ihr Sicherheitsfanatiker könnt die Seite nun schließen oder am besten zur Startseite zurückkehren. Wer sein Handy nicht gerootet oder das Glück hat, sich um Zertifikate keine Sorgen machen zu müssen, ebenso.

Ich installiere das Zertifikat wie im Wiki von CaCert.org beschrieben als System-Zertifikat statt als User-Zertifikat (ein User-Zertifikat hätten wir, wenn die den Weg "aktivierte Display-Sperre" / Sicherheit > Vom Speicher installieren gehen würden). Um das Zertifikat in das richtige Verzeichnis auf dem System rein zu kopieren, ist ein gerootetes Android notwendig.
Leider muss man sein .crt-Zertifikat nach einem bestimmten Schema benennen und konvertieren, damit Android etwas damit anfangen kann. Außerdem benötigt man den Kommandozeilenbefehl openssl, welchen allerdings jedes Unix-System mitbringen sollte.

Der Dateiname unseres Beispiel-Zertifikates root.crt soll seinem Hash-Wert entsprechen. Den Hash-Wert ermittelt man wie folgt:

openssl x509 -inform PEM -subject_hash_old -in root.crt | head -1

Die Option -subject_hash_old ergibt einen Hash im openssl 0.9 kompatiblen Format. Leider funktionierte diese Option bei mir nicht. Das stattdessen verwendete -subject_hash brachte allerdings denselben Hash-Wert zu Tage.

Nehmen wir an, der resultierende Hash-Wert wäre 5ed36f99, so nennen wir das Zertifikat entsprechend um:

cat root.crt > 5ed36f99.0

Was immer auch dieser Schritt dem Zertifikat noch anhängt...er ist wohl notwendig:

openssl x509 -inform PEM -text -in root.crt -out /dev/null >> 5ed36f99.0

Die Datei 5ed36f99.0 muss nun auf dem Handy in das Verzeichnis /system/etc/security/cacerts/.
Entweder übertragen wir die Datei via Bluetooth/E-Mail/Dropbox/etc. vom Computer auf das Handy und verwenden einen root-kompatiblen Datei-Explorer, um das Zertifikat an die entsprechende Stelle zu schieben oder wir gehen den Weg über USB und adb, wofür wir die entsprechenden Kommandozeilen-Programme auf dem Computer benötigen. Hier kurz zusammengefasst:

$ adb push 5ed36f99.0 /sdcard/0/
$ adb shell
adb> su
adb> mount -o remount,rw /system
adb> cp /sdcard/0/5ed36f99.0 /system/etc/security/cacerts/
adb> cd /system/etc/security/cacerts/
adb> chmod 644 5ed36f99.0
adb> reboot

Hat man es sich einfach gemacht und den Dateimanager verwendet, sollte man allerdings nicht vergessen, die Berechtigung des Zertifikats auf - r w – r – - r – - (644) zu ändern und danach das System neu zu starten, damit das Zertifikat wirksam wird.

Hat alles funktioniert, findet sich das Zertifikat nach dem Neustart unter den Systemzertifikaten in Sicherheit > Vertrauensw. Anmeldedaten (in meinem Fall handelt es sich um das CAcert Inc-Zertifikat.

Wie immer beim Ändern an System-Verzeichnissen:
Durchführung auf eigene Gefahr!