Wie lese ich den privaten Schlüssel in java aus einer pfx-Zertifikat
Ich versuche zu Lesen, einen privaten Schlüssel ich java .Ich lernte inorder zu tun, dass ich extrahiert den privaten Schlüssel aus meinen vollen Zertifikat im pfx-format.
Ich habe versucht, die unter open-ssl-Befehl zum konvertieren von pfx nach pem und dann zu pk8 , aber wenn ich zu Lesen versuchte den Schlüssel in java , es sagt invalid key format
convert pfx nach pem
openssl pkcs12 -in C:\Documents\xbox-token\conversion\xbox
token-FullCert.pfx -nocerts -out C:\Documents\xbox-token\conversion\xboxkey.pem
Passwortschutz entfernen
openssl rsa -in C:\Documents\xbox-token\conversion\xboxkey.pem -out C:\Documents\xbox-token\conversion\xboxkey.pem
Umwandeln pem-zu pk8
openssl pkcs8 -topk8 -in C:\Documents\xbox-token\conversion\xboxkey.pem -out C:\Documents\xbox-token\conversion\xboxprv.pk8
In der java-code
byte[] encodedPrivateKey=null;
File privateKeyFile = new File("C:/Documents/xbox-token/conversion/xboxprv.pk8");
FileInputStream inputStreamPrivateKey = null;
try {
inputStreamPrivateKey = new FileInputStream(privateKeyFile);
encodedPrivateKey = new byte[(int)privateKeyFile.length()];
inputStreamPrivateKey.read(encodedPrivateKey);
inputStreamPrivateKey.close();
} catch (FileNotFoundException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
//Create the private key.
PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(encodedPrivateKey);
System.out.println(encodedPrivateKey);
System.out.println(privateKeySpec);
RSAPrivateKey privateKey = null;
try {
privateKey = (RSAPrivateKey)KeyFactory.getInstance("RSA").generatePrivate(privateKeySpec);
} catch (InvalidKeySpecException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
Bin ich immer eine java.Sicherheit.spec.InvalidKeySpecException: java.Sicherheit.InvalidKeyException: invalid key format
Kann einer helfen
- Ich fand die Antwort für diese aus der unten post stackoverflow.com/questions/7525679/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, der trick ist, ein wenig mit openssl und dann bekommen keytool zu tun, die eigentliche Arbeit. Also mit openssl konvertieren Sie Ihre vorhandenen Zertifikate und Schlüssel in eine PKCS12-Datei. Die openssl verwenden, würden Sie etwas wie.
Und dann ist die Magie zu importieren .p12 in Ihren Schlüsselspeicher, als ob es war anderen keystore.
Haben Sie die Optionen für die Verwendung dieser innerhalb von java aber ich würde erwarten, dass eine vollständige Antwort zu beinhalten, die folgende.
Hoffe, es funktioniert!
Gegeben, dass Sie don ' T geben Sie eine Ausgabe-format für Ihre OpenSSL-Befehle erhalten Sie eine PEM-codierte Datei. Java erwartet, von DER Codierung. Statt Ihre Letzte openssl-Aufruf versuchen:
Dem 'informieren' - parameter sollten nicht erforderlich sein (es scheint der Standard), aber die '-outform' wahrscheinlich ist.
Wenn Sie überprüfen möchten, welches format Sie haben: PEM-Dateien sind ASCII - (Base64-kodiert) DER Dateien sind binäre. Wenn Sie Ihren text-editor mag es, Java-wahrscheinlich nicht.