У меня есть файл закрытого ключа в формате .der. Я пытаюсь сохранить этот закрытый ключ как объект PrivateKey (с Java) следующим образом:
PrivateKey clientPrivKey = getPrivateKeyFromKeyFile("C:\\Users\\Bob\\Desktop\\Assignments\\Project\\VPN Project\\src\\client-private.der");
Вот как выглядит метод getPrivateKeyFromKeyFile:
private static PrivateKey getPrivateKeyFromKeyFile(String keyfile) throws Exception
{
Path path = Paths.get(keyfile);
byte[] privKeyByteArray = Files.readAllBytes(path);
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(privKeyByteArray);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey myPrivKey = keyFactory.generatePrivate(keySpec);
return myPrivKey;
}
Но когда я пытаюсь это сделать, я получаю InvalidKeySpecException из-за этой строки кода:
PrivateKey myPrivKey = keyFactory.generatePrivate(keySpec);
Я не уверен, в чем здесь проблема. Я открыл файл закрытого ключа, и все выглядит хорошо. Он начинается с -----BEGIN RSA PRIVATE KEY-----
и заканчивается -----END RSA PRIVATE KEY-----
.
И в случае, если это уместно, я создал этот закрытый ключ с помощью этой команды OpenSSL:
genrsa -out client-private.der 2048