configurações de keystore e senha do java

Eu tenho a seguinte pergunta sobre keystores java e keytool. Presumo que um keystore possa ter mais de 1 certificados. Como tentei, via keytool, posso criar um keystore e, para acessar esse keystore, preciso definir uma senha. Também para acessar cada entrada de certificado, tenho que definir uma senha. É obrigatório ter a mesma senha para o keystore e as entradas? Caso contrário (e acho que é razoável supor isso), por que o código a seguir:

char[] pwd = new char[]{'s','e','c','r','e','t'};
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(new FileInputStream("myPersonal.keystore"), pwd);
kmf.init(ks, pwd);//fails here with exception

me dá a seguinte exceção?

Exception in thread "main" java.security.UnrecoverableKeyException: Cannot recover key
    at sun.security.provider.KeyProtector.recover(Unknown Source)
    at sun.security.provider.JavaKeyStore.engineGetKey(Unknown Source)
    at sun.security.provider.JavaKeyStore$JKS.engineGetKey(Unknown Source)
    at java.security.KeyStore.getKey(Unknown Source)

secret é a senha para acessar o keystoremyPersonal.keystore que eu criei via keytool. Existem 2 entradas nele, para certificados, 1 DSA e 1 RSA. Cada um tem uma senha diferente com keystore (e um ao outro). Agora, o código está correto, porque se eu usar um keystore com uma única entrada de certificado com a mesma senha do keystore, não haverá exceção e o programa funcionará bem.

Então, qual é o problema aqui? Eu não deveria ter senhas diferentes? Eu não deveria ter muitos certificados? Ou o que?

questionAnswers(1)

yourAnswerToTheQuestion