Ich habe mein eigenes CA-Zertifikat erstellt und möchte es jetzt auf meinem Android Froyo-Gerät (HTC Desire Z) installieren, damit das Gerät meinem Zertifikat vertraut.
Android speichert CA-Zertifikate in seinem Java-Keystore in /system/etc/security/cacerts.bks
. Ich habe die Datei auf meinen Computer kopiert, mein Zertifikat mit Portecle 1.5 hinzugefügt und auf das Gerät zurückgeschoben.
Jetzt scheint Android die Datei nicht automatisch neu zu laden. Ich habe in mehreren Blog-Posts gelesen, dass ich das Gerät neu starten muss. Dies führt dazu, dass die Datei erneut mit der Originaldatei überschrieben wird.
Mein nächster Versuch war, das Zertifikat von der SD-Karte zu installieren, indem ich es kopierte und die entsprechende Option aus dem Einstellungsmenü verwendete. Das Gerät teilt mir mit, dass das Zertifikat installiert wurde, aber anscheinend vertraut es dem Zertifikat nicht. Wenn ich versuche, den Keystore auf meinen Computer zu kopieren, finde ich außerdem immer noch den Originalbestand cacerts.bks
.
Wie kann ich mein eigenes Stammzertifizierungsstellenzertifikat als vertrauenswürdiges Zertifikat auf einem Android 2.2-Gerät installieren? Gibt es eine Möglichkeit, dies programmgesteuert zu tun?
quelle
Antworten:
Vor Android KitKat müssen Sie Ihr Gerät rooten, um neue Zertifikate zu installieren.
Von Android KitKat (4.0) bis Nougat (7.0) ist es möglich und einfach. Ich konnte das Charles Web Debbuging Proxy-Zertifikat auf meinem nicht gerooteten Gerät installieren und den SSL-Verkehr erfolgreich abhören.
Auszug aus http://wiki.cacert.org/FAQ/ImportRootCert
Ab Android N wird es etwas schwieriger, siehe diesen Auszug von der Charles Proxy-Website :
Fügen Sie Ihrer App eine Datei res / xml / network_security_config.xml hinzu:
Fügen Sie dann wie folgt einen Verweis auf diese Datei im Manifest Ihrer App hinzu:
quelle
/system/etc/security/cacerts/*.0
) werden nach dem Neustart / Neustart von AVD nicht beibehalten, sodass diese Lösung nicht erfolgreich war.debug-overrides
, bedeutet das, dass diesenetwork_security_config
nur auf Debug-Variante abzielt? Wenn ich eine andere Variante wie die UAT-Variante habe, funktioniert diese dann nicht?Ich habe viel Zeit damit verbracht, eine Antwort darauf zu finden (ich brauche Android, um StartSSL-Zertifikate zu sehen). Fazit: Mit Android 2.1 und 2.2 können Sie Zertifikate importieren, jedoch nur zur Verwendung mit WiFi und VPN. Es gibt keine Benutzeroberfläche zum Aktualisieren der Liste der vertrauenswürdigen Stammzertifikate, es wird jedoch über das Hinzufügen dieser Funktion diskutiert. Es ist unklar, ob es eine zuverlässige Problemumgehung für das manuelle Aktualisieren und Ersetzen der Datei cacerts.bks gibt.
Details und Links: http://www.mcbsys.com/techblog/2010/12/android-certificates/ . In diesem Beitrag finden Sie den Link zum Android-Fehler 11231 - möglicherweise möchten Sie Ihre Stimme und Abfrage zu diesem Fehler hinzufügen.
quelle
Wenn Sie Ihr Zertifikat für HTTPS-Verbindungen benötigen, können Sie die .bks-Datei als Rohressource zu Ihrer Anwendung hinzufügen und DefaultHttpConnection erweitern, sodass Ihre Zertifikate für HTTPS-Verbindungen verwendet werden.
quelle
Die hier verlinkte Anleitung wird wahrscheinlich die ursprüngliche Frage beantworten, ohne dass ein benutzerdefinierter SSL-Connector programmiert werden muss.
Es wurde eine sehr detaillierte Anleitung zum Importieren von Stammzertifikaten gefunden, die Sie durch die Installation vertrauenswürdiger CA-Zertifikate auf verschiedenen Versionen von Android-Geräten (unter anderem) führt.
Grundsätzlich müssen Sie:
Download: die Datei cacerts.bks von Ihrem Telefon.
adb pull /system/etc/security/cacerts.bks cacerts.bks
Laden Sie die CRT-Datei von der Zertifizierungsstelle herunter, die Sie zulassen möchten.
Ändern Sie die Datei cacerts.bks auf Ihrem Computer mithilfe des BouncyCastle-Anbieters
Laden Sie die Datei cacerts.bks zurück auf Ihr Telefon und starten Sie sie neu.
Hier finden Sie eine ausführlichere Schritt-für-Schritt-Anleitung zum Aktualisieren früherer Android-Telefone: So aktualisieren Sie den Keystore der HTTPS-Sicherheitszertifizierungsstelle auf Geräten vor Android 4.0
quelle
Es gibt eine VIEL einfachere Lösung dafür als hier oder in verwandten Themen. Wenn Sie eine Webansicht verwenden (wie ich), können Sie dies erreichen, indem Sie eine JAVASCRIPT-Funktion darin ausführen. Wenn Sie keine Webansicht verwenden, möchten Sie möglicherweise eine versteckte zu diesem Zweck erstellen. Hier ist eine Funktion, die in nahezu jedem Browser (oder in jeder Webansicht) funktioniert, um die Installation zu starten (im Allgemeinen über das gemeinsam genutzte OS-Zertifikat-Repository, einschließlich auf einem Droid). Es verwendet einen schönen Trick mit iFrames. Übergeben Sie einfach die URL an eine CRT-Datei an diese Funktion:
AKTUALISIEREN:
Der Iframe-Trick funktioniert auf Droids mit API 19 und höher, ältere Versionen der Webansicht funktionieren jedoch nicht so. Die allgemeine Idee funktioniert jedoch immer noch - laden Sie einfach die Datei mit einer Webansicht herunter / öffnen Sie sie und lassen Sie das Betriebssystem übernehmen. Dies kann eine einfachere und universellere Lösung sein (im aktuellen Java jetzt):
Beachten Sie, dass instance_ ein Verweis auf die Aktivität ist. Dies funktioniert perfekt, wenn Sie die URL zum Zertifikat kennen. In meinem Fall löse ich das jedoch dynamisch mit der serverseitigen Software. Ich musste eine ganze Menge zusätzlichen Codes hinzufügen, um eine Umleitungs-URL abzufangen und dies auf eine Weise aufzurufen, die keinen Absturz aufgrund einer Threading-Komplikation verursachte, aber ich werde hier nicht all diese Verwirrung hinzufügen ...
quelle
Was ich getan habe, um Startssl-Zertifikate zu verwenden, war ziemlich einfach. (auf meinem verwurzelten Telefon)
Ich habe /system/etc/security/cacerts.bks auf meine SD-Karte kopiert
Heruntergeladen http://www.startssl.com/certs/ca.crt und http://www.startssl.com/certs/sub.class1.server.ca.crt
Ging zu portecle.sourceforge.net und führte portecle direkt von der Webseite aus.
Öffnete meine Datei cacerts.bks von meiner SD-Karte (gab nichts ein, wenn ich nach einem Passwort gefragt wurde)
Wählen Sie Import in Portacle und öffnen Sie sub.class1.server.ca.crt. In meinem Fall hatte es bereits die ca.crt, aber vielleicht müssen Sie das auch installieren.
Der Keystore wurde gespeichert und baxck in /system/etc/security/cacerts.bks kopiert (ich habe zuerst für alle Fälle eine Sicherungskopie dieser Datei erstellt).
Ich habe mein Telefon neu gestartet und kann jetzt meine Site mit einem startssl-Zertifikat ohne Fehler besuchen.
quelle
Diese Schritte haben bei mir funktioniert:
Alternativ fand ich diese Optionen, die ich nicht selbst ausprobieren musste, die aber leicht zu befolgen waren:
Schließlich ist dies möglicherweise nicht relevant. Wenn Sie jedoch ein selbstsigniertes Zertifikat (mit mkcert) für Ihre PWA-App (Website) erstellen und einrichten möchten, die auf einem lokalen IIS-Webserver gehostet wird, habe ich diese Seite befolgt:
https://medium.com/@aweber01/locally-trusted-development-certificates-with-mkcert-and-iis-e09410d92031
Danke und hoffe es hilft !! :) :)
quelle
Hier ist eine alternative Lösung, mit der Ihr Zertifikat tatsächlich zur integrierten Liste der Standardzertifikate hinzugefügt wird: Vertrauen aller Zertifikate mithilfe von HttpClient über HTTPS
Es funktioniert jedoch nur für Ihre Anwendung. Es gibt keine Möglichkeit, dies programmgesteuert für alle Anwendungen auf dem Gerät eines Benutzers durchzuführen, da dies ein Sicherheitsrisiko darstellen würde.
quelle
Wenn Sie ein gerootetes Gerät haben, können Sie mithilfe eines Magisk-Moduls Benutzerzertifikate in das System verschieben, sodass es sich um ein vertrauenswürdiges Zertifikat handelt
https://github.com/yochananmarqos/Move-Certificates
quelle