Убедитесь, что приватный ключ имеет формат DER, и вы используете правильные ключи.Я считаю, что вы должны использовать PKCS8 здесь для privkeybytes
Во-первых, вам нужно преобразовать закрытый ключ в двоичный формат DER.Вот как бы вы это сделали, используя OpenSSL :
openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key.pem -out private_key.der -nocrypt
Наконец,
public static PrivateKey getPrivateKey(String filename) throws Exception {
File f = new File(filename);
FileInputStream fis = new FileInputStream(f);
DataInputStream dis = new DataInputStream(fis);
byte[] keyBytes = new byte[(int) f.length()];
dis.readFully(keyBytes);
dis.close();
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePrivate(spec);
}