Ich muss die Android-Anwendung ( .apk
) signieren .
Ich habe .pfx
Datei. Ich habe es .cer
über Internet Explorer in eine Datei konvertiert und dann .cer
in .keystore
Keytool konvertiert . Dann habe ich versucht, .apk
mit jarsigner zu signieren, aber es heißt, dass .keystore keinen privaten Schlüssel enthält.
Was mache ich falsch?
Antworten:
Verwenden von JDK 1.6 oder höher
Justin hat in den Kommentaren unten darauf hingewiesen, dass Keytool allein dies mit dem folgenden Befehl tun kann (allerdings nur in JDK 1.6 und höher):
Verwenden von JDK 1.5 oder niedriger
OpenSSL kann alles. Diese Antwort auf JGuru ist die beste Methode, die ich bisher gefunden habe.
Stellen Sie zunächst sicher, dass Sie OpenSSL installiert haben. Viele Betriebssysteme haben es bereits installiert, wie ich es unter Mac OS X gefunden habe.
Die folgenden zwei Befehle konvertieren die pfx-Datei in ein Format, das als Java PKCS12-Schlüsselspeicher geöffnet werden kann:
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:
Wenn Sie möchten, können Sie dies schließlich in einen JKS-Schlüsselspeicher konvertieren, indem Sie den oben erstellten Schlüsselspeicher in einen neuen Schlüsselspeicher importieren:
quelle
jarsigner kann Ihre pfx-Datei als Schlüsselspeicher für die Signatur Ihres JARs verwenden. Stellen Sie sicher, dass Ihre pfx-Datei beim Exportieren den privaten Schlüssel und die Zertifikatskette enthält. Es ist nicht erforderlich, in andere Formate zu konvertieren. Der Trick besteht darin, den Alias Ihrer pfx-Datei zu erhalten:
Sobald Sie Ihren Alias haben, ist das Signieren einfach
Die beiden oben genannten Befehle fordern Sie zur Eingabe des Kennworts auf, das Sie beim pfx-Export angegeben haben. Wenn Sie möchten, dass Ihr Passwort im Klartext angezeigt wird , verwenden Sie den Schalter -storepass vor dem Schalter -keystore
Bewundern Sie nach der Unterzeichnung Ihre Arbeit:
quelle
Ich habe diese Seite gefunden, auf der Sie erfahren, wie Sie einen PFX in JKS (Java Key Store) importieren:
quelle
Ihre PFX-Datei sollte den 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:
openssl pkcs12 -in filename.pfx -nocerts -out key.pem
openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem
keytool
.quelle
Justin (oben) ist genau. Beachten Sie jedoch, dass je nachdem, von wem Sie das Zertifikat erhalten (Zwischenzertifizierungsstelle, betroffene Stammzertifizierungsstelle oder nicht) oder wie der Pfx erstellt / exportiert wird, manchmal die Zertifikatkette fehlt. Nach dem Import hätten Sie ein Zertifikat vom Typ PrivateKeyEntry, jedoch mit einer Kette von 1 Länge.
Um dies zu beheben, gibt es mehrere Optionen. Die einfachere Option ist für mich das Importieren und Exportieren der pfx-Datei in IE (Auswahl der Option Alle Zertifikate in die Kette aufnehmen). Der Import- und Exportprozess von Zertifikaten im IE sollte an anderer Stelle sehr einfach und gut dokumentiert sein.
Importieren Sie den Keystore nach dem Export wie oben gezeigt. Jetzt hätten Sie einen Keystore mit einem Zertifikat vom Typ PrivateKeyEntry und einer Zertifikatskettenlänge von mehr als 1.
Bestimmte .Net-basierte Webdienst-Clients sind fehlerhaft (Vertrauensstellung kann nicht hergestellt werden), wenn Sie die oben genannten Schritte nicht ausführen.
quelle
Wenn Sie mit JDK 1.5 oder niedriger arbeiten, verfügt das Dienstprogramm keytool nicht über die
-importkeystore
Option (siehe Dokumentation zum Keytool JDK 1.5 ), und die Lösung von MikeD ist nur verfügbar, wenn Sie das.pfx
auf einem Computer mit einem neueren JDK (1.6 oder höher) übertragen.Eine weitere Option in JDK 1.5 oder niedriger (wenn Sie über ein Oracle WebLogic-Produkt verfügen) besteht darin, die Anweisungen in diesem Oracle-Dokument zu befolgen: Verwenden von PFX- und PEM-Zertifikatformaten mit Keystores . Es beschreibt die Konvertierung in ein
.pem
Format, wie Zertifikatinformationen aus diesem Textformat extrahiert und.jks
mit demjava utils.ImportPrivateKey
Dienstprogramm in das Format importiert werden (dies ist ein Dienstprogramm, das im WebLogic-Produkt enthalten ist).quelle