Root Zertifikat importieren unter Android

1. ZertifikatsspeicherZertifikat Android

Zertifikate bilden oft die Grundlage für eine verschlüsselte Datenübertragung bzw. für eine Authentifizierung an einer Gegenstelle. Ist der Aussteller und Prüfer eines Zertifikats die selbe Person spricht man von einem selbst signierten Zertifikat. Im Zertifikatsspeicher von Android-Geräten sind allerdings nur jene Zertifikate enthalten, die von offiziellen Zertifizierungsstellen (Certificate Authority, CA) geprüft bzw. unterschrieben wurden.

Damit ihr selbst ausgestellte Zertifikate nutzen könnt, ist daher ein manueller Import in den CA-Speicher eures Android Geräts erforderlich. Im vorliegenden Tutorial beschreibe ich die Konvertierung ins richtige Format und den anschließenden Import.

2. Voraussetzung: Certificate Authority

Immer wieder erhalte ich Anfragen von Anwendern, welche am Import des Zertifikats scheitern. Trotz der positiven Meldung »Zertifikat installiert«, erscheint es anschließend nicht unter den Nutzer-Zertifikaten. Das Problem: Selbst signierte SSL-Zertifikate können nicht importiert werden, sondern lediglich Zertifikate, die von einer Zertifizierungsstelle unterschrieben wurden. Im Normalfall ist dieser »Validierungsprozess« bei einer offiziellen CA kostenpflichtig. Wer sich seine eigene CA einrichtet oder bspw. einen Dienst wie CAcert nutzt, kann diese Kosten vermeiden. Nachdem euer Zertifikat von einer CA unterschrieben wurde, könnt ihr den unter Ziffer 3 beschriebenen Import-Vorgang durchführen.

Hilf mit die Spendenziele zu erreichen!

Unabhängig. Kritisch. Informativ. Praxisnah. Verständlich.

Die Arbeit von kuketz-blog.de wird vollständig durch Spenden unserer Leserschaft finanziert. Sei Teil unserer Community und unterstütze unsere Arbeit mit einer Spende.

Mitmachen ➡

2.1 Alternative Variante

Update

19.08.2014: In den Kommentaren hat Michael Meier bestätigt, dass Zertifikate selbst dann importiert werden können, wenn sie zuvor nicht von einer CA unterschrieben wurden. Ihr benötigt hierfür allerdings ein gerootetes Android-Gerät.

Im Wiki von CAcert ist unter der Ziffer »CAcert system trusted certificates (without lockscreen)« ein alternativer Import-Weg beschrieben. Insgesamt ist der Aufwand im Vergleich mit der CA-Lösung geringer, da die Einrichtung einer selbst verwalteten CA hinfällig wird. Ebenso könnt ihr Ziffer 3 dieses Tutorials überspringen, da alle notwendigen Schritte bereits im verlinkten Beitrag beschrieben sind.

3. Zertifikat importieren

Gemäß Google muss zunächst Folgendes erfüllt sein:

Android unterstützt DER-codierte X.509-Zertifikate, die in Dateien mit CRT- oder CER-Dateiendungen gespeichert werden. Weist die Zertifikatdatei eine DER- oder eine andere Dateiendung auf, wandeln Sie diese in eine CRT- oder CER-Endung um. Anderenfalls lässt sich die Datei nicht installieren.

Für einen Import muss das CA-Zertifikat also im CRT bzw. CER Format vorliegen. Und genau hier liegt oftmals das Problem, denn selbst ausgestellte Zertifikate werden meist PEM kodiert und basieren auf der ASCII Zeichenkodierung. In diesem Format lässt sich das Zertifikat nicht unter Android importieren und muss zuvor in ein lesbares Format konvertiert werden. Im Gegensatz zu den meisten Browsern und Desktop Betriebssystemen muss das Zertifikat für Android also in einer binären Zeichenformatierung vorliegen.

3.1 Direkte Konvertierung

Unter Linux und Konsorten lässt sich die Konvertierung von PEM nach CRT elegant mittels Konsolenbefehl bewerkstelligen:

openssl x509 -inform PEM -outform DER -in CA.pem -out CA.crt

3.2 Export über Browser

Ein anderer Weg führt über Firefox auf einem Desktop Rechner. Vorausgesetzt ihr habt die Sicherheitsausnahme für die Gegenstelle bereits bestätigt navigiert ihr zu:

Einstellungen --> Erweitert --> Verschlüsselung 
--> Zertifikate anzeigen.

Wählt das gewünschte Zertifikat aus und exportiert es in das *.DER Format.
Export
Gegebenenfalls müsst ihr noch die Endung *.crt hinzufügen.

3.3 Import

Anschließend muss das CA-Zertifikat in den Android Zertifikatsspeicher importiert werden. Kopiert das Zertifikat dazu auf den Speicher der SD-Karte unter »/mnt/SDCARD«. Über einen Datei-Browser (zb. Root Explorer) könnt ihr das Zertifikat anschließend selektieren und der Beschreibung folgen: Unter

Einstellungen --> Sicherheit --> Vertrauensw. Anmeldedaten 
--> Nutzer

ist euer Zertifikat anschließend einsehbar.

4. Fazit

Bevor ihr eine Konvertierung in das für Android lesbare DER-Format vornehmt, solltet ihr euer Zertifikat von einer CA unterschreiben lassen. Dabei spielt es keine Rolle, ob es sich hierbei um eine offizielle oder selbst verwaltete Zertifizierungsstelle handelt. Anschließend könnt ihr das Zertifikat über das Dateisystem in den Zertifikatsspeicher von Android importieren.

Bildquellen:

Siegel: Nemo, Creative Commons CC0

Über den Autor | Kuketz

Mike Kuketz

In meiner freiberuflichen Tätigkeit als Pentester / Sicherheitsforscher (Kuketz IT-Security) schlüpfe ich in die Rolle eines »Hackers« und suche nach Schwachstellen in IT-Systemen, Webanwendungen und Apps (Android, iOS). Des Weiteren bin ich Lehrbeauftragter für IT-Sicherheit an der Dualen Hochschule Karlsruhe, sensibilisiere Menschen in Workshops und Schulungen für Sicherheit und Datenschutz und bin unter anderem auch als Autor für die Computerzeitschrift c’t tätig.

Der Kuketz-Blog bzw. meine Person ist regelmäßig in den Medien (heise online, Spiegel Online, Süddeutsche Zeitung etc.) präsent.

Mehr Erfahren ➡

SpendeUnterstützen

Die Arbeit von kuketz-blog.de wird zu 100% durch Spenden unserer Leserinnen und Leser finanziert. Werde Teil dieser Community und unterstütze auch du unsere Arbeit mit deiner Spende.

Folge dem Blog

Wenn du über aktuelle Beiträge informiert werden möchtest, hast du verschiedene Möglichkeiten, dem Blog zu folgen:

Bleib aktuell ➡


Diskussion

19 Ergänzungen zu “Root Zertifikat importieren unter Android”

  1. Comment Avatar Stefan Schwarz sagt:

    Der Import erfolgte bei mir unter Einstellungen –> Sicherheit –> (Anmeldedatenspeicher) Von SD-Karte installieren (Untertext: Zertifikate von SD-Karte installieren).

    Anzumerken das das Zertifikate wirklich unter /mnt/SDCARD liegen muss, manche Geräte legen einen anderen mountpoint für die eigentlich microSD an (z.B /mnt/EXT)

  2. Comment Avatar Kim-Sascha Decker sagt:

    Hallo und Danke für die Anleitung. Leider klappt es bei mir nicht zu 100%. Ich habe das Zertifikat exportiert wie gefordert und auf dem Tablet (Nexus 7) importiert. Es kam auch die Meldung, dass der Import abgeschlossen sei. Aber unter den Nutzerzertifikaten steht nichts drin. Auch unter den Systemzertifikaten taucht meines nicht auf. Der Chrome auf dem Tablet reagiert daher auch nach wie vor, als wäre kein Zertifikat da. Kann das daran liegen, dass das Tablet verschlüsselt ist? Aber dann wäre doch der Import schon schiefgelaufen, oder?

    • Comment Avatar Mike Kuketz sagt:

      An der Verschlüsselung des Tablets wird es kaum liegen. Eventuell nochmal den Export- und Importvorgang ganz genau durchführen – ansonsten weiss ich leider im Moment auch keinen Rat.

      Auch den Kopierort beim Import beachten: /mnt/SDCARD

      • Comment Avatar Kim-Sascha Decker sagt:

        OK, das mit dem Kopierort könnte es sein. Ich habe es ins Downloadverzeichnis gepackt. Gefunden wurde es zwar, aber wer weiss. Werde ich heute Abend nochmal versuchen.

        • Comment Avatar Muesliman sagt:

          Habe dasselbe Problem mit einem GS4. Es wird zwar gesagt, dass das Zertifikat installiert wird, aber es scheint nicht im benutzer Tab auf.

          • Comment Avatar Mike Kuketz sagt:

            Versucht es mal bitte mit der Variante: https://wiki.natenom.de/sammelsurium/selbst-signierte-zertifikate/chrome

            Schritte:
            1. Verlinkter Anleitung folgen und den Schlüssel exportieren.
            2. Danach auf das Smartphone unter /mnt/SDCARD kopieren.
            3. Ausprobieren.

            Scheinbar hat Android Probleme mit dem Firefox Report.
            Bitte um Feedback! :)

          • Comment Avatar Andreas Kämpf sagt:

            Beim Samsung SG3 wird zwar auch „zertifikat installiert“ angezeigt, aber es taucht nicht bei den User-Zertifikaten auf. Dabei habe ich es sogar direkt mit openssl umgewandelt, nachdem der Weg via Firefox nicht hingehauen hat.
            Gibt es ggf. Anforderungen, dass z.B. auf jeden Fall eine Domain registriert sein muss?

    • Comment Avatar Michael Meier sagt:

      Wer Probleme mit selbst signierten Zertifikaten hat sollte mal den Punkt „CAcert system trusted certificates (without lockscreen)“ von Folgender Website ausprobieren:

      http://wiki.cacert.org/FAQ/ImportRootCert#Android_Phones_.26_Tablets

      Damit habe ich ein selbst signiertes Zertifikat in den Zertifikatsspeicher bekommen, welches über den „SD-Karten-Weg“ so nicht geklappt hat (Meldung, dass Zertifikat installiert wurde, aber kein Eintrag in Nutzer vorhanden). Ist dann nicht unter Nutzer, sondern unter System zu finden.

      • Comment Avatar Mike Kuketz sagt:

        Hallo Michael,

        ist es damit also möglich auch selbst signierte SSL-Zertifikate zu installieren, die zuvor NICHT von einer CA unterschrieben wurden?

        • Comment Avatar Michael Meier sagt:

          Hi Mike,

          ja richtig! Mein Zertifikat wurde von keiner CA unterschrieben und deswegen hat es sich anscheinend über den normalen Importweg nicht installieren lassen.

          Mit oben verlinkter Vorgehensweise hat es funktioniert. Man braucht hier nur das selbst signierte Zertifikat so verarbeiten wie in der Anleitung beschrieben. Man braucht für die Installation jedoch Root-Rechte. Es ist danach halt ein „system trusted“ anstatt „user trusted“ Zertifikat. Vielleicht gibts hier sicherheitstechnische Unterschiede. Aber das sollte bei einem selbst signierten Zertifikat denke ich kein Problem sein, wenn man auf seinen privaten Schlüssel aufpasst.

          • Comment Avatar seasmaie sagt:

            @Michael Meier Danke für diesen tollen Hinweis!
            Mein selbst signiertes SSL-Zertifikat wurde auch als ’system trusted‘ erkannt.
            Als System nutze ich ein selbst kompiliertes CyanogenMod (Nightly vom 01.08.2014) mit OpenPDroid Patches.

  3. Comment Avatar Muesliman sagt:

    Habe das sCert mit chrome exportiert und auf /storage/emulated/0 geschoben. Habe keinen weg gefunden mit dem Datei manager auf /mnt/SDCARD zuzugreifen. Samsung hat hier wohl einige anpassungen an die Pfade gemacht.

    Jedenfalls wird das Cert. importiert, aber leider mit dem selben ergebnis, das es nicht aufscheint ich mich nicht verbinden kann.

  4. Comment Avatar Stefan sagt:

    Es geht auch über die App Totalcommander -> Datei öffnen, Namen angeben und es geht.

  5. Comment Avatar Frank Walter sagt:

    Ich habe das crt-Zertifikat zwar erfolgreich installiert, also ganz gewöhnlich auf die SD-Karte in den Downloadordner runtergeladen und geklickt, aber ich musste dazu eine Bildschirmsperre einrichten (Pattern lock), was mir gar nicht passt.
    Ich habe ein SGS2 mit CyanogenMod 10.2.1 (entspricht Android 4.3).
    Ich konnte die Sperre danach auch nicht wieder auf normale Weise deaktivieren, sondern musste mit Hilfe des Tasker-Plugins „Secure Settings“ (Password/Pin Clear Password) die Bildschirmsperre deaktivieren, aber das ist schon sonderbar.

    Ist das normal oder habe ich da vielleicht was übersehen?

    frank

    • Comment Avatar Frank Walter sagt:

      Nach etwas Recherche finde ich auch noch das Xposed Modul „Keyguard Disabler“, mit dem man die Bildschirmsperre ausschalten kann, aber ohne Root unmöglich.

      Komische Politik von Android, dem Benutzer das vorzuschreiben, einen Grund mehr, sein Gerät zu rooten.

      • Comment Avatar Mike Kuketz sagt:

        Ja das mit der PIN-Sperre ist normal. Es gibt aber immer »Mittel und Wege«, um dies dann wieder zu umgehen.

        • Comment Avatar franc sagt:

          Leider nicht ohne Root-Zugriff. Sonderbares Sicherheitskonzept von Android. Wohl noch nicht fertig.

          • Comment Avatar Phil sagt:

            Hab dazu folgendes gefunden:

            The certificate will be detected and you will be prompted to enter a certificate name (the name of your CA, doesn’t matter) and maybe switch to a higher security level (by entering a PIN/password for unlocking instead of swiping; this is useless but apparently Android thinks there’s a client certificate with a private key that must be protected).

            Grüße
            Phil

  6. Comment Avatar Ben sagt:

    Also bei meinem Xperia Z2 auf Android 4.4.4 werden DER-formatierte Zertifikate nicht akzeptiert, dafür aber PEM-formatierte.
    Das Nutzer-Zertifikat, mit dem sich das Smartphon letztendlich gegenüber dem RADIUS-Server authentifizieren soll ist im PKCS#12-Format mit der Dateiendung .p12 und wird auch anstandslos importiert. Es enthält neben dem Nutzer-Zertifikat den dazugehörigen Private Key sowie den kompletten Certificate Chain (inkl. Root CA).
    Bis auf das Nutzer-Zertifikat finde ich alle CA-Zertifikate im Nutzer-Zertifikatspeicher.

    Leider ist Android aber zu dämlich sich korrekt per EAP-TLS zu authentifizieren. Interessanterweise schafft es Windows (selbst XP) ohne Probleme. Es scheint so als müsste ich den kompletten Cert Chain unter CA-Zertifikat reinbekommen und lediglich das Nutzer-Zertifikat unter Benutzerzertifikat doch PKCS#12 verlangt einen Private Key.

    Ich weiß sowieso nicht was der Schwachsinn mit den selbst gewählten Zertifikat-Namen beim Import soll. Es wäre weitaus intelligenter einfach die Zertifikate bei der Auswahl im WiFi-Setup direkt anzuzeigen. Aber warum einfach wenn es auch kompliziert geht …

HilfeWenn du konkrete Fragen hast oder Hilfe benötigst, sind das offizielle Forum oder der Chat geeignete Anlaufstellen, um dein Anliegen zu diskutieren. Per E-Mail beantworte ich grundsätzlich keine (Support-)Anfragen – dazu fehlt mir einfach die Zeit. Kuketz-Forum

Abschließender Hinweis

Blog-Beiträge erheben nicht den Anspruch auf ständige Aktualität und Richtigkeit wie Lexikoneinträge (z.B. Wikipedia), sondern beziehen sich wie Zeitungsartikel auf den Informationsstand zum Zeitpunkt des Redaktionsschlusses.

Kritik, Anregungen oder Korrekturvorschläge zu den Beiträgen nehme ich gerne per E-Mail entgegen.