it-swarm.com.de

Wie konvertiere ich eine PFX-Datei in einen Keystore mit privatem Schlüssel?

Ich muss Android application (.apk).
Ich habe .pfx Datei. Ich konvertierte es zu .cer Datei über den Internet Explorer und dann konvertiert .cer bis .keystore mit keytool. Dann habe ich versucht zu unterzeichnen .apk mit jarsigner, aber es heißt, dass .keystore keinen privaten Schlüssel enthält.

Was mache ich falsch?

100
Ola

Verwenden von JDK 1.6 oder höher

Justin hat in den Kommentaren unten darauf hingewiesen, dass nur Keytool dies mit dem folgenden Befehl ausführen kann (allerdings nur in JDK 1.6 und höher):

keytool -importkeystore -srckeystore mypfxfile.pfx -srcstoretype pkcs12 
-destkeystore clientcert.jks -deststoretype JKS

Verwenden von JDK 1.5 oder niedriger

OpenSSL kann alles. Diese Antwort auf JGur ist die beste Methode, die ich bisher gefunden habe.

Stellen Sie zunächst sicher, dass OpenSSL installiert ist. Viele Betriebssysteme haben es bereits installiert, wie ich bei Mac OS X festgestellt habe.

Die folgenden beiden Befehle konvertieren die pfx-Datei in ein Format, das als Java PKCS12-Schlüsselspeicher) geöffnet werden kann:

openssl pkcs12 -in mypfxfile.pfx -out mypemfile.pem
openssl pkcs12 -export -in mypemfile.pem -out mykeystore.p12 -name "MyCert"

HINWEIS: Der im zweiten Befehl angegebene Name ist der Alias ​​Ihres Schlüssels im neuen Schlüsselspeicher.

Sie können den Inhalt des Schlüsselspeichers mit dem Dienstprogramm Java keytool mit dem folgenden Befehl überprüfen:

keytool -v -list -keystore mykeystore.p12 -storetype pkcs12

Wenn Sie möchten, können Sie dies in einen JKS-Schlüsselspeicher konvertieren, indem Sie den oben erstellten Schlüsselspeicher in einen neuen Schlüsselspeicher importieren:

keytool -importkeystore -srckeystore mykeystore.p12 -destkeystore clientcert.jks -srcstoretype pkcs12 -deststoretype JKS
246
MikeD

jarsigner kann Ihre pfx-Datei als Schlüsselspeicher zum Signieren Ihres jars verwenden. Stellen Sie sicher, dass Ihre pfx-Datei den privaten Schlüssel und die Zertifikatskette hat, wenn Sie sie exportieren. Es ist nicht erforderlich, in andere Formate zu konvertieren. Der Trick besteht darin, den Alias ​​ Ihrer pfx-Datei zu erhalten:

 keytool -list -storetype pkcs12 -keystore your_pfx_file -v | grep Alias

Sobald Sie Ihren Alias ​​haben, ist das Signieren einfach

jarsigner.exe -storetype pkcs12 -keystore pfx_file jar_file "your alias"

Mit den beiden oben genannten Befehlen werden Sie zur Eingabe des Kennworts aufgefordert, das Sie bei pfx export angegeben haben. Wenn Sie möchten, dass Ihr Passwort im Klartext angezeigt wird, verwenden Sie den Schalter - storepass vor dem Schalter - keystore

Einmal unterschrieben, bewundere deine Arbeit:

jarsigner.exe -verify -verbose -certs  yourjarfile
22
gjpc

Ich habe this Seite gefunden, auf der Sie erfahren, wie Sie eine PFX in JKS (Java Key Store) importieren:

keytool -importkeystore -srckeystore PFX_P12_FILE_NAME -srcstoretype pkcs12 -srcstorepass PFX_P12_FILE -srcalias SOURCE_ALIAS -destkeystore KEYSTORE_FILE -deststoretype jks -deststorepass PASSWORD -destalias ALIAS_NAME
17
kaptan

Justin (oben) ist genau. Beachten Sie jedoch, dass je nachdem, von wem Sie das Zertifikat erhalten (Zwischenzertifizierungsstelle, betroffene Stammzertifizierungsstelle oder nicht) oder wie die PFX erstellt/exportiert wird, manchmal die Zertifikatskette fehlt. Nach dem Import hätten Sie ein Zertifikat vom Typ PrivateKeyEntry, jedoch mit einer Kettenlänge von 1.

Um dies zu beheben, gibt es mehrere Möglichkeiten. Meiner Meinung nach ist es einfacher, die pfx-Datei im IE zu importieren und zu exportieren (wenn Sie die Option wählen, alle Zertifikate in die Kette aufzunehmen). Der Import und Export von Zertifikaten in IE) sollte sehr einfach und an anderer Stelle gut dokumentiert sein.

Importieren Sie nach dem Exportieren den Keystore wie oben gezeigt. Jetzt hätten Sie einen Schlüsselspeicher mit einem Zertifikat vom Typ PrivateKeyEntry und einer Zertifikatkettenlänge von mehr als 1.

Bestimmte .Net-basierte Webdienst-Clients führen einen Fehler aus (es kann keine Vertrauensbeziehung hergestellt werden), wenn Sie die obigen Schritte nicht ausführen.

2
TechIsFun

Ihre PFX-Datei sollte den darin enthaltenen privaten Schlüssel enthalten. Exportieren Sie den privaten Schlüssel und das Zertifikat direkt aus Ihrer PFX-Datei (z. B. mit OpenSSL) und importieren Sie sie in Ihren Java Keystore).

Bearbeiten

Weitere Informationen:

  • Laden Sie OpenSSL für Windows herunter hier .
  • Privaten Schlüssel exportieren: openssl pkcs12 -in filename.pfx -nocerts -out key.pem
  • Ausfuhrbescheinigung: openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem
  • Importieren Sie den privaten Schlüssel und das Zertifikat mit keytool in den Java= Keystore.
2
Bernard

Wenn Sie mit JDK 1.5 oder niedriger arbeiten, verfügt das Dienstprogramm keytool nicht über die Option -importkeystore (siehe Dokumentation zu JDK 1.5 keytool ), und die Lösung von MikeD ist nur verfügbar, wenn Sie den .pfx auf eine Maschine mit einer neueren Version übertragen JDK (1.6 oder höher).

Eine weitere Option in JDK 1.5 oder niedriger (wenn Sie ein Oracle WebLogic-Produkt verwenden) ist das Befolgen der Anweisungen in diesem Oracle-Dokument: Verwenden von PFX- und PEM-Zertifikatformaten mit Keystores . Es beschreibt die Konvertierung in das Format .pem, das Extrahieren von Zertifikatsinformationen aus diesem Textformat und das Importieren in das Format .jks mit dem Dienstprogramm Java utils.ImportPrivateKey (dies ist ein Dienstprogramm, das im Lieferumfang von WebLogic enthalten ist).

0
Mariano Paniga