Zertifikatinstallation ohne obligatorischen PIN-Sperrbildschirm

Google-Support sagt :

Der akzeptable Sperrtyp kann von Ihrem Systemadministrator vorgegeben werden.

Wo kann ich definieren, was akzeptabel ist? Bei Bedarf kann ich das Zertifikat neu generieren.

So kann ich den Slide Lockscreen wieder verwenden.

(Ich verwende CM9 RC1, Android 4.0.4)

Ich werde eine Lösung akzeptieren, die das Zertifikat direkt auf dem System installiert und so die PIN-Anforderung umgeht.
Um Ihre Anmeldeinformationen zu sichern, müssen Sie einen der Sperrbildschirmtypen verwenden, der eine Art Geheimcode (Muster, PIN oder Passwort) enthält. Was diese Zeile Ihnen sagt, ist, dass Ihr Administrator (normalerweise über eine Exchange ActiveSync-Richtlinie) Ihr Telefon sperren kann, sodass nur einige Typen davon akzeptiert werden, z PINs haben nicht genügend Kombinationen. Es bedeutet nicht, dass Sie diese Sicherheitsanforderung deaktivieren können.
@GAThrawn Ich finde das inakzeptabel, wenn ich nur eine Zertifizierungsstelle installiere, um meine Webserver über SSL zu authentifizieren (mit selbstsignierten Zertifikaten). Ich würde es verstehen, wenn es darum ginge, Schlüssel auf dem Gerät zu signieren oder den Benutzer zu authentifizieren – aber beides ist umgekehrt. Glücklicherweise scheint Sgiebels Lösung für mich zu funktionieren, mit einigen geringfügigen Anpassungen, die ich in den Kommentaren dort beschrieben habe. Einziger Nachteil bisher: Es erfordert Root.

Antworten (6)

Das Problem beim Deaktivieren der Sperrbildschirmsicherheit mit dem Umschalter/Profil besteht darin, dass die Sperrbildschirm-Widgets ebenfalls nicht angezeigt werden, sodass Sie nicht zum Entsperren schieben können. Wenn Sie Ihr Telefon neu starten, funktionieren die Tasten auch nicht, bis Sie die Einstellung erneut umschalten.

Eine andere Möglichkeit besteht darin, das Zertifikat wie gewohnt zu installieren und dann die Verzeichnisse /data/misc/keychain und keystore mit etwas zu sichern, das die ACLs beibehält, z. B. Root Explorer, an einem Speicherort, der ACLs unterstützt. Ich schlage vor, sie nach /tmp zu kopieren. Löschen Sie dann die Anmeldeinformationen aus den Einstellungen und aktivieren Sie Slide To Unlock. Kopieren Sie dann die Ordner aus /tmp zurück. Die Zertifizierungsstelle wird installiert.

Dies funktioniert nicht mehr. Sobald Sie versuchen, das Zertifikat irgendwo zu verwenden (z. B. bei der Verbindung mit einem WLAN-Netzwerk), fordert das Betriebssystem Sie auf, den Bildschirm erneut zu sperren.
@CoryKlein Wenn Sie auf Abbrechen klicken, werden Sie zur Eingabe einer PIN aufgefordert und Sie können die zuletzt festgelegte PIN eingeben. Es wird benötigt, um die Daten zu entschlüsseln.
@Kurian - Also habe ich die obigen Anweisungen befolgt, und wenn ich versuche, eine Verbindung zu einem WLAN-Netzwerk herzustellen, heißt es "Sie müssen eine Sperrbildschirm-PIN festlegen", ich klicke auf "Abbrechen" und nichts passiert. Wenn ich auf "Ok" drücke und von dort aus abbreche, wird immer noch nicht nach der PIN gefragt.
@CoryKlein Ich habe deinen vorherigen Kommentar falsch gelesen. Ich sprach von VPNs. Wenn Sie sich mit einem VPN verbinden, werden Sie aufgefordert, die letzte Sperrbildschirm-PIN einzugeben, um Ihre Anmeldeinformationen zu entschlüsseln. Ich weiß nicht, ob es für persönliche Zertifikate mit privaten Schlüsseln funktioniert. Ich weiß, dass es funktioniert, um vertrauenswürdige CA-Zertifikate zu installieren. Es könnte auch das spezifische ROM sein, das Sie verwenden. Prä-ICS-AOSP-ROMs benötigten nie eine Sperrbildschirm-PIN zum Speichern von VPN-Anmeldeinformationen.

Wie genau das geht, habe ich auf meiner Seite "Installieren von CAcert-Zertifikaten auf Android als 'System'-Anmeldeinformationen ohne Sperrbildschirm - Anleitung" unter http://wiki.pcprobleemloos.nl/android/cacert beschrieben

Ich habe es auch im Cyanogenmod-Forum gepostet: http://forum.cyanogenmod.com/topic/82875-installing-cacert-certificates-on-android-as-system-credentials-without-lockscreen/

Grundsätzlich sind die Befehle:

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

Um den korrekten Dateinamen zu erhalten, konvertieren Sie dann das Zertifikat:

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

Kopieren Sie sie nach /system/etc/security/cacerts/ und ändern Sie die neuen .0-Dateien in „644“. Neustarten und überprüfen. Wählen Sie auf Ihrem Android-Gerät „Zertifikate löschen“ und Sie können die PIN entfernen (indem Sie die PIN eingeben und Ihren Sperrbildschirm auf „Keine“ oder „Löschen“ ändern.

Hier habe ich das Stammzertifikat CAcert verwendet, aber Sie möchten wahrscheinlich auch das Zertifikat class3.crt oder verwenden Sie Ihre eigenen Zertifikate.

Sie erwähnen "eigene Zertifikate". Ich habe es gerade mit meiner "CA" (erstellt mit TinyCA) versucht und im letzten Schritt ("inform") nur eine Fehlermeldung erhalten: 140342119224992:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: TRUSTED CERTIFICATE. Wenn Sie mit Unable to load certificate in openssl prüfen , sollte die .pemDatei übereinstimmen. Aber Ihr letzter Befehl ändert nichts. Stimmt etwas nicht, oder wird das für eine selbstsignierte/erstellte Zertifizierungsstelle erwartet? Und bevor ich anfange zu hacken: sollte das trotzdem funktionieren?
OK, funktionierte und wurde akzeptiert mit meiner selbst erstellten TinyCA CA: openssl x509 -inform PEM -text -fingerprint -in cacert.pem > d6a2705a.0, dann den base64-Block mit einem Texteditor nach oben verschieben, die Datei in einfügen, /system/etc/security/cacerts/ausführen chown root:root d6a2705a.0und chmod 0644 d6a2705a.0aus dem Verzeichnis heraus – et voila, es taucht als vertrauenswürdiges Systemzertifikat auf . Yeehaa!
@sgiebels Hast du zufällig auch eine Lösung, wie man Anmeldeinformationen (aus den System-Anmeldeinformationen oder andere) in einer 802.1X-WLAN-Verbindung verwenden kann? Es scheint, als würde der Schlüsselspeicher/Schlüsselbund auf dem Gerät (/data/misc/key...) das Passwort zur Verschlüsselung verwenden, also: Jedes Mal, wenn die Anmeldeinformationen benötigt werden (Verbindung zum WLAN), wird die PIN/das Passwort erneut angefordert ( in meinem System) ist die Sperre wieder aktiviert.
Das hat gut funktioniert, außer dass ich auch ein Problem mit der Formatierung des Zertifikats aufgrund von dos-Zeilenenden hatte. dos2unix konvertiert sie und überprüft dann, ob Sie die richtige Endung in der Zertifikatszeile haben (meine sah so aus: -----END CERTIFICATE-----Certificate:was auch einen Parsing-Fehler verursachte.

Ich habe eine Lösung entdeckt, die ohne zusätzliche Software oder manuelles Kopieren von Dateien funktioniert:

  1. Stellen Sie Ihren Sperrbildschirm auf "Muster". Geben Sie ein Muster und eine Entsperr-PIN ein. Merken Sie sich die Entsperr-PIN.
  2. Installieren Sie Ihr Benutzerzertifikat.
  3. Schalten Sie den Bildschirm aus und wieder ein.
  4. Geben Sie das Muster einige Male falsch ein, bis die Meldung "Muster vergessen?" Option erscheint.
  5. Klicken Sie auf "Muster vergessen?", scrollen Sie nach unten, geben Sie die Entsperr-PIN ein und bestätigen Sie mit "OK".
  6. Schließen Sie das Fenster „Einstellungen zum Entsperren des Bildschirms“ mit der Zurück-Taste , ohne eine Option auszuwählen .

Das System ist jetzt auf "Swipe unlock" eingestellt, aber das Benutzerzertifikat ist weiterhin verwendbar (getestet mit dem Webbrowser und einer benutzerdefinierten App mit DefaultHttpClient).

Getestet auf einem Android 4.1.2 auf einem Galaxy Tab 2 10.1.

funktioniert nicht mit wpa-enterprise/TLS auf LG G2, Zertifikate sind danach verschwunden
Das ist ein toller Fehler! Danke! (funktionierte perfekt mit Galaxy S5, Android 6)

Ich wollte nur eine Antwort hinzufügen, die eine Variante von guttermonk für einen bestimmten Anwendungsfall ist: Installieren eines Zertifikats auf einer Bluestacks-Instanz. Während ich dies schreibe, wurde die Einstellungs-App für Bluestacks so geändert, dass das Festlegen einer PIN oder eines Passworts nicht möglich ist und somit auch das Hinzufügen eines Benutzerzertifikats nicht möglich ist. Aber wir können mit dem Ansatz von guttermonk und einigen anderen Schritten ein Root-Zertifikat in das System bekommen. Ich konnte ein Zertifikat ohne PIN oder Passwort installieren und ohne es jemals im Zertifikatsspeicher des Benutzers zu installieren.

Voraussetzungen:

  • Root-Berechtigungen auf der Bluestacks-Instanz
  • openssl (auf dem Host, z. B. wie bei Git Bash bereitgestellt)
  • Eine Terminal-App in Bluestacks (zB Termux)

In meinem Fall hatte ich die Zertifikatsdatei in Bluestacks heruntergeladen und hatte dort kein openssl zur Verfügung. Wir können die Datei in das mit Windows freigegebene Verzeichnis kopieren :

cp /sdcard/Download/mycert.cer /sdcard/windows/BstSharedFolder

In Windows können wir das openssl verwenden, um den Hash des Zertifikats zu erhalten (ich nehme an, das ist es).

cd C:\ProgramData\BlueStacks\Engine\UserData\SharedFolder # in CMD
cd /c/ProgramData/BlueStacks/Engine/UserData/SharedFolder # in Bash

openssl x509 -inform PEM -subject_hash_old -in mycert.cer | head -1
# e.g. abcd1234

Zurück in Android können wir die Systempartition beschreibbar machen , das Zertifikat in das Verzeichnis der Systemzertifikate kopieren und seine Berechtigungen und seinen Besitz reparieren. Hängen Sie die Systempartition aus Sicherheitsgründen danach nur lesend ein.

mount -o rw,remount /system

cd /system/etc/security/cacerts/
cp /sdcard/Download/mycert.cer ./abcd1234.0
chmod 644 abcd1234.0
chown system:system abcd1234.0

mount -o ro,remount /system
  • Sie können die Profile von CyanogenMod verwenden .
    (Für andere Leser: Dies erfordert die benutzerdefinierte CyanogenMod Rom Version 9+)

    Erstellen oder ändern Sie einfach ein vorhandenes Profil und schalten Sie dort die „Bildschirmsperre“ aus.

    Es ist: Systemeinstellungen->Profile->Standard->Sperrbildschirmmodus->Deaktiviert

  • Integrieren Sie Ihr Zertifikat in die standardmäßige Android-Keystore-Datei

    Sehen Sie sich hier die ausgezeichnete Anleitung von CAcert an

    Ich bin mir jedoch nicht sicher, ob Sie dies mit einem selbstsignierten Zertifikat tun können (möglicherweise müssen Sie zu einer selbst erstellten Zertifizierungsstelle wechseln (verwenden Sie tinyca für ein nettes GUI-Tool auf * nix)).

Das geht nicht (mehr). Sobald Sie Zertifikate (zB von cacert.org) installiert haben, ist diese Option/Eintrag im Profil ausgegraut.

Ich habe einen Weg gefunden, das Problem zu lösen, aber es erfordert Root und funktioniert möglicherweise nur mit Root-, selbstsignierten oder Zwischenzertifizierungsstellen.

Wenn Sie ein Zertifikat haben, dem Android nicht vertraut, wird es beim Hinzufügen in den persönlichen Zertifikatspeicher verschoben. Wenn Sie diesem persönlichen Zertifikatsspeicher ein Zertifikat hinzufügen, erfordert das System eine höhere Sicherheitsstufe, um das Gerät zu entsperren. Wenn Sie es jedoch schaffen, Ihr Zertifikat zum Systemspeicher hinzuzufügen, haben Sie diese Anforderung nicht. Natürlich ist Root erforderlich, um ein Zertifikat zum Systemspeicher hinzuzufügen, aber es ist ziemlich einfach.

So geht's:

1 - Fügen Sie Ihr Zertifikat normal hinzu. Zum Beispiel hieß mein Zertifikat some.crt. Es wird in Ihrem persönlichen Speicher gespeichert und Android fragt Sie nach einer PIN / einem Passwort ... Fahren Sie fort.

2 - Durchsuchen Sie mit einem Dateimanager mit Root-Fähigkeiten Dateien in /data/misc/keychain/cacerts-addedoder /data/misc/keystore. Sie sollten hier eine Datei sehen 1000_USRCERT_some, die das Zertifikat heißt, das Sie in Schritt 1 hinzugefügt haben.

3 - Verschieben Sie diese Datei nach system/etc/security/cacerts (Sie müssen die Systempartition r/w mounten)

4 - Starten Sie das Telefon neu

5 - Sie können jetzt die PIN/das Passwort löschen, die bzw. das Sie zum Entsperren des Geräts festgelegt haben.

Funktionierte für mich mit einem selbstsignierten Zertifikat unter Android 4.4.2. Ich hoffe es hilft!

Interessant, dass Sie weder die Originalquelle erwähnt haben, noch den Autor angemessen gutgeschrieben haben. Folgen Sie So referenzieren Sie auf von anderen geschriebenes Material .