Wie zu verwenden .Schlüssel und .crt-Datei, die in java generiert, die von openssl?
Ich brauche asymmetrische Verschlüsselung in java. Ich generieren .Schlüssel und .crt-Dateien mit Passwort und .crt-Datei von openssl, die sagte in http://www.imacat.idv.tw/tech/sslcerts.html .
Wie Sie diese verwenden .Schlüssel und .crt-Datei zu extrahieren, publickey und den privaten Schlüssel in Java?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre
.key
und.crt
Dateien können im PEM-format vorliegen. Um dies zu überprüfen, öffnen Sie mit einem text-editor und überprüfen Sie, ob der Inhalt sieht aus wie------BEGIN CERTIFICATE------
(oder "begin RSA private key"...). Dies ist in der Regel das Standard-format von OpenSSL, es sei denn, Sie haben ausdrücklich angegeben DER.Es ist wahrscheinlich nicht erforderlich (siehe unten), aber wenn Ihr Zertifikat im DER-format (eine Binär-format), können Sie konvertieren Sie Sie im PEM-format verwenden:
(Überprüfen Sie die Hilfe für
openssl rsa
für etwas, das es ähnlich wie mit dem privaten Schlüssel, wenn nötig.)Anschließend erhalten Sie zwei Optionen:
Erstellen Sie eine PKCS#12-Datei
Dann können Sie es direkt von Java als keystore-Typ "PKCS12". Die meisten Java-Anwendungen sollte Ihnen ermöglichen, geben Sie ein keystore-Typ, zusätzlich zu den Speicherort der Datei. Für die Standard-system-Eigenschaften, dies geschieht mit
javax.net.ssl.keyStoreType
(aber die Anwendung, die Sie verwenden möglicherweise nicht mit diesem). Andernfalls, wenn Sie wollen, laden es sich ausdrücklich vor, verwenden Sie so etwas wie dieses:(Dann sollten Sie in der Lage sein zu Durchlaufen und die
aliases()
des- KeyStore
und verwendengetCertificate
(und danngetPublicKey()
für den öffentlichen Schlüssel) undgetKey()
.Verwenden BouncyCastle's
PEMReader
.Für die privaten Schlüssel, die Sie benötigen, um zu implementieren eine
PasswordFinder
(siehe link von PEMReader doc) für den Bau derPEMReader
wenn der private Schlüssel ist durch ein Passwort geschützt. (Sie müssen die Darsteller das ErgebnisreadObject()
in eineKey
oderPrivateKey
.)getKey()
. Bei Verwendung von PKCS#12-format, es ist das gleiche Kennwort für den Schlüssel für den laden selbst.PEMReader
ist nicht immer notwendig, je nachdem, was Sie gelesen zu haben. Wenn es nur für Zertifikate, können Sie versuchen, dieCertificateFactory
(Teil JSSE). Siehe Beispiel hier und beachten Sie hier (der Kommentar könnte nützlich sein, dort).CertificateFactory
scheint zu funktionieren... abergenerateCertificate
für den Namen... würde nicht erraten haben, in einem Jahr.Diese sollte das tun, was Sie tun möchten (mit der BouncyCastle PEMReader wie oben vorgeschlagen) -- nehmen Sie eine PEM-codierte private key + Zertifikat, und Ausgabe einer PKCS#12-Datei. Verwendet das gleiche Passwort für die PKCS12-das war verwendet zum Schutz der privaten Schlüssel.
Werfen Sie einen Blick auf org.bouncycastle.crypto.- Generatoren.OpenSSLPBEParametersGenerator
Wie ich es verstehe, OpenSSL hat, die gespeicherten Dateien im so genannten PEM-format vorliegen. Sie müssen für die Konvertierung von Java-Schlüsselspeicher (JKS) format, dann arbeiten mit diesem format (native Java), um Dateien zu extrahieren. Für die Umwandlung benutzen Sie bitte diese Google-Abfrage, es gibt Recht gute Ergebnisse.
Laden Sie die JKS-Datei zu java.Sicherheit.KeyStore-Klasse. Dann nutzen Sie getCertificate und getKey Methoden, um die benötigten Informationen zu erhalten.