bg-tutorials

Wie man einen CSR auf Android generiert

Dieses Tutorial zeigt Ihnen wie Sie eine CSR (Certificate Signing Request) für Android generieren mit dem Java-Tool keytool.

Android generiert keine öffentlichen CA-TLS-CSRs auf dem Telefon selbst: Ein öffentliches CA-Zertifikat wird für einen Server (oder ein Gerät, das der Benutzer kontrolliert) ausgestellt, und Android-Apps und Browser nutzen es. Der unten beschriebene keytool-Ablauf erzeugt einen PKCS #10-Request aus einem Java-Keystore, was der richtige Weg ist, wenn Sie ein TLS-Zertifikat benötigen, dem eine Android-App oder eine für Mobilgeräte optimierte Website vertrauen wird.

Wählen Sie das richtige Verfahren für Ihren Fall

„CSR für Android“ kann drei verschiedene Dinge bedeuten. Stellen Sie sicher, dass Sie auf der richtigen Seite sind, bevor Sie irgendwelche Befehle ausführen:

  • Ein TLS-Zertifikat für einen Server, mit dem Android-Clients kommunizieren. Dies ist der häufigste Fall, und der Rest dieser Seite behandelt ihn. Verwenden Sie keytool (unten) oder generieren Sie die CSR extern mit unserem CSR-Generator, und installieren Sie dann das ausgestellte Zertifikat auf dem Webserver, API-Gateway oder MQTT-Broker, den Ihre App erreicht.
  • Ein Signierschlüssel für eine APK oder AAB. Die Android-App-Signierung verwendet einen selbstsignierten RSA- oder EC-Schlüssel in einem Java-Keystore: Es ist keine öffentliche CA beteiligt und keine CSR einzureichen. Generieren Sie den Schlüssel mit keytool über den Assistenten Build > Generate Signed Bundle / APK von Android Studio (oder führen Sie keytool manuell aus), und registrieren Sie den Schlüssel dann bei Google Play App Signing. Bestellen Sie hierfür kein öffentliches Zertifikat.
  • Ein von einer MDM oder EMM bereitgestelltes Gerätezertifikat. Android Enterprise stellt verwalteten Geräten Client-Zertifikate über SCEP, EST oder die Managed Configurations API aus. Die CSR wird generiert und das Zertifikat automatisch von der MDM installiert. Es ist kein manueller keytool-Schritt erforderlich.

Wenn Ihr Fall der erste ist, fahren Sie fort. Der Ablauf besteht aus zwei Teilen: Zuerst erstellen Sie einen PKCS12-Keystore, der den privaten Schlüssel enthält, und exportieren dann die CSR aus diesem Keystore.

Was Sie benötigen

  • Eine Java-Installation (JDK oder JRE), damit der Befehl keytool in Ihrem PATH verfügbar ist. Prüfen Sie dies mit keytool -help. Unter Windows muss der Ordner bin von Java im PATH enthalten sein, oder Sie können keytool direkt aus dem bin-Verzeichnis des JDK ausführen.
  • Den genauen vollqualifizierten Domainnamen (FQDN), den Sie absichern möchten (zum Beispiel www.yoursite.com), sowie alle weiteren Hostnamen, die auf demselben Zertifikat stehen sollen (für die Subject Alternative Name-Liste).
  • Die rechtlichen Angaben Ihrer Organisation (Land, Bundesland, Stadt, Organisationsname) für den Distinguished Name. Verwenden Sie die Werte exakt so, wie sie in öffentlichen Geschäftsunterlagen erscheinen: Die CA wird Abweichungen ablehnen.

Schritt 1: Erstellen Sie den Keystore und den privaten Schlüssel

Wenn Sie Ihre CSR bereits generiert haben, springen Sie direkt zu CSR einreichen und dann zur Anleitung zur SSL-Installation für Android.

Öffnen Sie ein Terminal (oder die Eingabeaufforderung unter Windows) und führen Sie den folgenden keytool-Befehl aus. Dieser erstellt einen neuen Keystore im Format PKCS12, generiert darin ein 2048-Bit-RSA-Schlüsselpaar und speichert den Schlüssel unter dem von Ihnen gewählten Alias. PKCS12 ist seit JDK 9 das standardmäßige Keystore-Format; das ältere JKS-Format ist veraltet und sollte für neue Schlüssel vermieden werden.

keytool -genkeypair 
  -alias myalias 
  -keyalg RSA -keysize 2048 
  -storetype PKCS12 
  -keystore yoursite.p12 
  -validity 825

Unter Windows sieht derselbe Befehl in einer Zeile so aus (beachten Sie den absoluten Pfad, damit Sie die Datei wiederfinden):

keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore C:certsyoursite.p12 -validity 825

Was die Optionen bewirken:

  • -alias myalias: der Eintragsname innerhalb des Keystores. Wählen Sie eine Bezeichnung, die Sie wiedererkennen, und notieren Sie sie sich. Sie müssen genau diesen Alias erneut verwenden, wenn Sie die CSR exportieren und später das signierte Zertifikat importieren.
  • -keyalg RSA -keysize 2048: Ein 2048-Bit-RSA-Schlüssel ist das aktuelle öffentliche Minimum, das jede CA akzeptiert. Verwenden Sie 3072 Bit für einen langlebigeren Schlüssel oder generieren Sie einen ECDSA-Schlüssel mit -keyalg EC -groupname secp256r1 für einen kleineren, schnelleren Schlüssel (jede moderne CA stellt gegen ECDSA P-256 und P-384 aus).
  • -storetype PKCS12: erzwingt den modernen PKCS12-Keystore. Die passende Dateiendung ist .p12 (oder .pfx).
  • -keystore yoursite.p12: die zu erstellende Keystore-Datei. Ersetzen Sie den Namen durch etwas, das Sie sich merken können, und bewahren Sie die Datei sicher auf: Sie enthält Ihren privaten Schlüssel.
  • -validity 825: wie lange das selbstsignierte Platzhalterzertifikat im Keystore gültig ist. Das signierte Zertifikat der CA ersetzt es später, sodass dieser Wert die Produktions-Lebensdauer nicht beeinflusst.

keytool fragt anschließend nach einem Keystore-Passwort. Wählen Sie ein starkes Passwort und speichern Sie es in Ihrem Passwortmanager. Sie benötigen es für jeden späteren keytool-Befehl und für jeden Server, der den Keystore verwendet. Bei PKCS12-Keystores entspricht das Schlüsselpasswort dem Keystore-Passwort, sodass Sie sich nur ein Passwort merken müssen.

Schritt 2: Geben Sie die Angaben Ihrer Organisation ein (DN)

keytool fragt nun nach dem Distinguished Name (DN): den Identitätsfeldern, die in der CSR erscheinen werden. Beantworten Sie jede Aufforderung mit dem exakten rechtsgültigen Wert für Ihre Organisation. Verwenden Sie ausschließlich Standard-ASCII-Zeichen: Nicht-lateinische Buchstaben führen zu einem fehlerhaften Request. Auch die Zeichensetzung ist wichtig, da die CA Ihre Angaben mit öffentlichen Geschäftsunterlagen abgleicht.

  • What is your first and last name? Dies ist die Formulierung von keytool für den Common Name (CN). Geben Sie den exakten FQDN ein, den Sie absichern möchten (zum Beispiel www.yoursite.com), oder einen Wildcard wie *.yoursite.com. Geben Sie nicht den Namen einer Person ein.
  • What is the name of your organizational unit? Das CA/Browser Forum hat das Attribut organizationalUnitName am 01.09.2022 abgeschafft, und öffentliche CAs entfernen es aus ausgestellten Zertifikaten. Beachten Sie, dass das Drücken der Eingabetaste das Feld nicht leer lässt: keytool setzt einen eigenen Standardwert ein, sodass der DN OU=Unknown enthält und dieser Wert in die CSR übernommen wird. Um das Attribut wirklich wegzulassen, überspringen Sie die Eingabeaufforderungen und übergeben Sie den DN direkt mit -dname, wobei Sie OU aus der Zeichenkette weglassen.
  • What is the name of your organization? Geben Sie den vollständigen rechtsgültigen Namen Ihres Unternehmens ein, genau wie registriert (zum Beispiel Your Company LLC). Erforderlich für OV- und EV-Zertifikate; bei Domain Validation (DV)-Zertifikaten wird der Wert ignoriert, sodass ein beliebiger kurzer Platzhalter funktioniert.
  • What is the name of your city or locality? Schreiben Sie den vollständigen Namen der Stadt, in der Ihr Unternehmen registriert ist (zum Beispiel Seattle, nicht SEA).
  • What is the name of your state or province? Geben Sie den vollständigen Namen des Bundeslandes oder der Provinz ein (zum Beispiel California, nicht CA).
  • What is the two-letter country code for this unit? Geben Sie den zweistelligen ISO 3166-1 alpha-2-Ländercode ein (zum Beispiel US, GB, DE). Sehen Sie bei Unsicherheit in der offiziellen ISO-Liste nach.

keytool gibt den zusammengestellten DN aus und fragt Is CN=…, OU=…, O=…, L=…, ST=…, C=… correct? Geben Sie yes ein und drücken Sie die Eingabetaste zur Bestätigung. Wenn Sie einen Tippfehler bemerken, geben Sie no ein, und keytool startet die Eingabeaufforderungen neu.

Schritt 3: Exportieren Sie die CSR mit einem Subject Alternative Name

Exportieren Sie nun die CSR mit keytool -certreq. Jede öffentliche CA validiert den Hostnamen gegen die Subject Alternative Name (SAN)-Erweiterung, nicht gegen den Common Name (Browser und moderne TLS-Bibliotheken haben die Prüfung des CN vor Jahren eingestellt), fügen Sie also selbst bei einem einzelnen Hostnamen ein SAN hinzu. Verwenden Sie denselben Alias, den Sie in Schritt 1 festgelegt haben:

keytool -certreq 
  -alias myalias 
  -file certreq.csr 
  -keystore yoursite.p12 
  -ext SAN=DNS:www.yoursite.com,DNS:yoursite.com

Unter Windows lautet derselbe Befehl in einer Zeile:

keytool -certreq -alias myalias -file certreq.csr -keystore C:certsyoursite.p12 -ext SAN=DNS:www.yoursite.com,DNS:yoursite.com

Fügen Sie für ein Multi-Domain-Zertifikat pro Hostnamen einen DNS:-Eintrag hinzu (getrennt durch Kommas, ohne Leerzeichen). Für einen Wildcard verwenden Sie DNS:*.yoursite.com. keytool fragt nach dem Keystore-Passwort und schreibt die CSR anschließend als certreq.csr in Ihr aktuelles Verzeichnis.

Schritt 4: Öffnen Sie die CSR und reichen Sie sie bei der CA ein

Öffnen Sie certreq.csr in einem beliebigen Texteditor (Notepad, TextEdit, nano, vim). Sie können sie auch im Terminal ausgeben lassen:

cat certreq.csr

In der Windows-Eingabeaufforderung:

type certreq.csr

Sie sehen einen Block, der so aussieht:

-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDXjCCAkYCAQAwgZQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
... (many lines of base64) ...
-----END NEW CERTIFICATE REQUEST-----

Markieren Sie den gesamten Block einschließlich der Zeilen BEGIN NEW CERTIFICATE REQUEST und END NEW CERTIFICATE REQUEST (manche CAs beschriften sie mit BEGIN CERTIFICATE REQUEST / END CERTIFICATE REQUEST: beide Bezeichnungen werden akzeptiert). Kopieren Sie ihn und fügen Sie ihn in das CSR-Feld Ihres Bestellformulars ein.

Überprüfen Sie die CSR vor dem Einreichen (optional)

Es lohnt sich, den Common Name, die SAN-Einträge und die Schlüsselgröße zu überprüfen, bevor Sie den Request an die CA senden. keytool gibt dieselben Informationen aus dem Keystore-Eintrag aus:

keytool -printcertreq -file certreq.csr

Bevorzugen Sie ein Online-Tool? Fügen Sie den Inhalt des Requests in SSL Dragons CSR-Decoder ein, um den Subject, die SAN-Liste und die Parameter des öffentlichen Schlüssels auszulesen. Bestätigen Sie, dass der Common Name mit dem Hostnamen übereinstimmt, den die Clients verwenden werden, und dass jeder erforderliche Name in der Subject Alternative Name-Liste erscheint.

Wird Android dem ausgestellten Zertifikat vertrauen?

Ja, für jedes Zertifikat, das von einer öffentlich vertrauenswürdigen CA signiert wurde. Android liefert einen systemeigenen Speicher von Root-Zertifikaten mit, der die Vertrauenslisten der großen Browser widerspiegelt, sodass ein Zertifikat, das unter einem dieser Roots ausgestellt wurde, ohne zusätzliche Konfiguration von Chrome, WebView und jeder App, die den Systemtrust-Store nutzt, akzeptiert wird.

Zwei Punkte sind wichtig zu wissen, wenn Sie das Zertifikat (oder das Root-Zertifikat einer privaten CA) zusätzlich auf dem Gerät selbst installieren:

  • Von Benutzern installierte CAs werden von Apps ab Android 7 ignoriert. Seit Android 7 (Nougat) wird standardmäßig nur der Systemspeicher vom App-Datenverkehr als vertrauenswürdig eingestuft, und auch Google Chrome ignoriert von Benutzern installierte CAs. Wenn Ihre App einer privaten CA vertrauen muss, muss der Entwickler dies über eine Netzwerksicherheitskonfiguration aktivieren, die <certificates src="user" /> enthält. Zertifikate öffentlicher CAs benötigen dies nicht: Sie befinden sich bereits im Systemspeicher.
  • Pinnen Sie auf einen stabilen Bezeichner, nicht auf ein einzelnes Zertifikat. Wenn Sie Certificate Pinning in Ihrer App implementieren, pinnen Sie auf den SPKI-Hash des öffentlichen Schlüssels oder auf die ausstellende CA, nicht auf ein bestimmtes Blattzertifikat. Andernfalls sperrt die nächste Erneuerung Ihre Benutzer aus.

Nächste Schritte

Nachdem die CA die CSR validiert und Ihr Zertifikat ausgestellt hat, importieren Sie das ausgestellte Zertifikat zurück in denselben Keystore (unter demselben Alias) und stellen Sie den Keystore dann auf dem Server bereit, den die Android-Clients erreichen werden. Sehen Sie unsere Android SSL-Installationsanleitung für die geräteseitigen Installationsschritte, oder die plattformspezifischen Installationsanleitungen unter Wie man ein SSL-Zertifikat installiert, wenn Ihr Backend auf Tomcat, JBoss, Nginx oder einem anderen Server läuft.

Sparen Sie 10% auf SSL-Zertifikate, wenn Sie noch heute bestellen!

Schnelle Ausstellung, starke Verschlüsselung, 99,99% Browser-Vertrauen, engagierter Support und 25-tägige Geld-zurück-Garantie. Gutscheincode: SAVE10

A detailed image of a dragon in flight
Geschrieben von

Erfahrener Content-Autor, spezialisiert auf SSL-Zertifikate. Verwandeln Sie komplexe Cybersicherheitsthemen in klare, ansprechende Inhalte. Tragen Sie durch wirkungsvolle Narrative zur Verbesserung der digitalen Sicherheit bei.