从OpenSSL PEM编码密钥重构KeyPair

时间:2017-07-09 20:30:14

标签: java ssl rsa private-key pkcs#8

我在以前的应用程序中使用OpenSSL创建了一个使用以下命令创建的密钥:

openssl req -nodes -newkey rsa:2048 -keyout root.key \
    -out root.csr -config ./openssl.cnf

我将其更改为PKCS8密钥,因为我需要在Java中使用该密钥:

openssl pkcs8 -topk8 -nocrypt -in pkcs1_key_file -out pkcs8_key.pem

据我所知,这是有效的,因为我能用它创建一个SSLContext。我无法重新创建KeyPair对象以便使用它执行其他操作。我试过了:

Path privateKeyPath = Paths.get("root.key.pem");
File privateKeyFile = new File( System.getProperty("user.dir") + File.separator + "ue.key.pem");
byte[] bytes = Files.readAllBytes(privateKeyPath);
PKCS8EncodedKeySpec ks = new PKCS8EncodedKeySpec(bytes);
BufferedReader br = new BufferedReader(new FileReader(privateKeyPath.toFile()));
PEMParser pemParser = new PEMParser(new FileReader(privateKeyFile));
PrivateKeyInfo privateKeyInfo = (PrivateKeyInfo) pemParser.readObject(); // ?????

我已经看过其他代码,例如Read an encrypted private key with bouncycastle/spongycastle,他们在哪里pemParser.readObject,对象的类型为PEMEncryptedKeyPair,或者他们使用转换器getKeyPair(),但是当我致电readObject时,我的对象属于PrivateKeyInfo类型,因此我也无法呼叫getKeyPair

在使用OpenSSL命令更改为PKCS8密钥或尝试重建KeyPair时,我是否缺少某个步骤?感谢。

0 个答案:

没有答案