我在以前的应用程序中使用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
时,我是否缺少某个步骤?感谢。