ich habe mich gestern um einige Längen quer gestellt, als ich versuchte mithilfe von openssl ein Zertifikat für eine App im Microsoft Store zu erstellen. Anders als bei einer 'normalen' exe werden die Zertifikate benötigt und selber signiert.
1. Ich bin also in einen neuen Ordner gegangen und habe erstmal einen Key und eine Extension erstellt, da Microsoft einen EKU (Ehanced Key Usage) mit der Info, dass es sich um ein Code-Zertifikat handelt von uns will. Also eine neue txt-Datei mit dem Namen cs.cnf erstellt und mit Inhalt gefüllt:
#inhalt cs.cnf extensions = extend [req] prompt = no distinguished_name = dn-param [dn-param] CN = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX [extend] basicConstraints = CA:FALSE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always extendedKeyUsage=1.3.6.1.5.5.7.3.3 #codeSigning [policy] #empty
Das CN-Feld bekommt ihr in eurer App im Dev-Center unter App-Verwaltung -> App-Identität -> Paket/Identität/Herausgeber.
2. Nun muss die Datei nur noch verwurstet werden. Hierfür genügt ein wenig Konsolen-Magic. Wichtig: Ihr müsst openssl als Path gesetzt haben, oder vor openssl den Pfad in den bin-order dran hängen.
Um jetzt einen Schlüssel und eine CSR zu erstellen, brauchen wir folgenden Befehl:
openssl req -newkey rsa:4096 -keyout cs.key -out cs.csr -config cs.cnf -extensions extend
Ihr werdet nach einem Passwort für den privaten Schlüssel gefragt und nach einer Bestätigung des Passwortes. Bitte wählt was sicheres (Nicht 123 oder password) und schreibt es auf!
3. Jetzt möchte ich das Zertifikat generieren. Da Microsoft das x509-Format benötigt, welches ebenfalls das EKU-Feld beinhaltet, verwenden wir folgenden Befehl:
openssl x509 -in cs.csr -out cs.crt -req -signkey cs.key -days 1001 -extfile cs.cnf
Wir werden nach dem Kennwort für den privaten Schlüssel aus Schritt 2 gefragt.
Wer genau hinsieht merkt, dass ich cs.cnf zweimal verwendet habe. Das liegt daran, dass ich die Befehle möglichst klein halten will und sehr viele Parameter in die Datei ausgelagert habe.
4. Jetzt haben wir gefühlt 20 cs.*-Dateien und Microsoft braucht noch eine andere. Die pfx-Datei (pkcs12) ist ein großer Kochtopf, in dem wir jetzt den Schlüssel und das Zertifikat zusammen mit folgenden Befehl rein werfen:
openssl pkcs12 -export -out cs.pfx -keysig -inkey cs.key -in cs.crt
Wir werden einmal nach dem Kennwort für den privaten Schlüssel aus Schritt 2 und einmal nach einem Export-Kennwort gefragt. Als Export-Kennwort verwenden wir ein anderes als für den Schlüssel, jedoch genauso sicher!
That's it!
Das Zertifikat ist nun einsatzbereit und kann z.B. bei Phonegap auf die Buildserver geschossen werden.
Liebe Grüße
Hendrik
Dieser Beitrag wurde von keegan1120 bearbeitet: 06. Februar 2018 - 20:45