Hallo an alle Ich versuche, einen PKCS # 8 privaten Schlüssel, den ich in meinem Java-Programm generiere, in eine PEM-kodierte Datei zu konvertieren.Konvertieren eines PKCS # 8 privaten Schlüssels zu PEM in Java
Security.addProvider(new BouncyCastleProvider());
SecureRandom rand = new SecureRandom();
JDKKeyPairGenerator.RSA keyPairGen = new JDKKeyPairGenerator.RSA();
keyPairGen.initialize(2048, rand);
KeyPair keyPair = keyPairGen.generateKeyPair();
PEMWriter privatepemWriter = new PEMWriter(new FileWriter(new File(dir + "private.key")));
privatepemWriter.writeObject(keyPair.getPrivate());
Nach dem Ausführen des Programms habe ich die privaten Schlüssel in beiden Formaten und einen öffentlichen Schlüssel (der Code wie es funktioniert nicht dargestellt ist). Ich benutze dann diesen Befehl openssl, um den Schlüssel "private.key" zurück zu einer Datei mit Pem-Formatierung zu konvertieren.
openssl pkcs8 -nocrypt -inform DER -in private.key -out private2.pem
Als ich vergleichen private.pem und private2.pem sie sind anders und natürlich, wenn ich versuche, es zu benutzen private.pem sagt, es ist keine gültige Datei.
Welchen Schritt vermisse ich, um diesen privaten Schlüssel richtig in das PEM-Format zu konvertieren, das ich brauche? Ich kann OpenSSL nicht in meinem Programm verwenden, sonst würde ich einfach diesen Funktionsaufruf hinzufügen. Ich habe Zugang zu BouncyCastle-Bibliotheken in diesem Programm, also vielleicht hat es eine Lösung, die ich übersehen habe.
Mit welcher Software versuchen Sie zu interagieren? (Wenn Sie sagen, "es sagt, es ist keine gültige Datei", was ist "es"?) – erickson
Curl und OpenSSL sagen die gleiche Sache, wenn ich versuche, den private.key für verschiedene Operationen zu verwenden. – Hiro2k
fehlt privatepemWriter.close(); // um korrekt zu spülen. Vielen Dank. –