Problemas com o keystore, chaves

é o seguinte: criei uma chave rsa com o openssl (privkey.pem), depois gerei um certificado autoassinado com essa chave (cacert.pem).
daí fiz isso aí bem simples:

    FileInputStream cacert = new FileInputStream("cacert.pem"); 
    CertificateFactory certf = CertificateFactory.getInstance("X509");
    X509Certificate cert = (X509Certificate) certf.generateCertificate(cacert);
    
    FileInputStream privkey = new FileInputStream("privkey.pem");
    byte[] key = new byte[privkey.available()];
    privkey.read(key);
    privkey.close();
    SecretKeySpec spec = new SecretKeySpec(key, "RSA");
    
    KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
    ks.load(null, null);
    ks.setKeyEntry("teste",spec,"teste".toCharArray(),null);
    
    FileOutputStream fos = new FileOutputStream("newks");
    ks.store(fos,"teste".toCharArray());
    
    ks.getKey("teste","teste".toCharArray());

daí estou tendo o seguinte problema:
java.security.UnrecoverableKeyException: extra data given to DerValue constructor
at sun.security.provider.KeyProtector.recover(Unknown Source)
at sun.security.provider.JavaKeyStore.engineGetKey(Unknown Source)
at java.security.KeyStore.getKey(Unknown Source)
at KeyTest.main(KeyTest.java:42)

a linha 42 é ks.getKey(“rafael”,"".toCharArray());

o que eu to fazendo de errado??