Pegar chave privada do certificado

Quando tento recuperar a chave privada de um determinado certificado, como a seguinte código:

ks = KeyStore.getInstance("JKS"); try { ks.load(keyStore, publicKey.toCharArray()); } catch (IOException ex) { throw new PasswordInvalidException("Chave pública inválida."); } String alias = "meuCertificado"; keyEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(alias, new KeyStore.PasswordProtection("minhaSenha" .toCharArray()));

Tenho a exceção:

java.lang.UnsupportedOperationException: trusted certificate entries are not password-protected at java.security.KeyStoreSpi.engineGetEntry(Unknown Source) at java.security.KeyStore.getEntry(Unknown Source) at br.gov.es.sefaz.assinatura.AssinaturaDigital.assinarXML(AssinaturaDigital.java:152) at br.gov.es.sefaz.assinatura.AssinaturaDigital.main(AssinaturaDigital.java:77)

Já tentei tudo…alguém me dá uma luz…

Obrigado.

Você não consegue pegar a chave privada se o certificado estiver marcado como “trusted”. Liste seu keystore com o comando keytool e as opções -list -v

Então thingol…Listei o keystore e o certificado está assim:
Entry type: trustedCertEntry

É isso que você falou? Tem como desmarcar como “trusted”

vLW

É isso mesmo. É que um “trusted certificate” é um certificado que deve ter apenas a chave pública cadastrada e deve ser um certificado-raiz (ou um certificado intermediário) na cadeia de certificação.

Como faço para pegar a chave privada para assinar, neste caso?

Cara, já li umas paradas aqui, mas não consegui ainda…se alguém souber o que devo fazer ou um caminho que devo seguir, muito agradeço.