我对 java 密钥库和 keytool 有以下问题。我假设一个密钥库可能有超过 1 个证书。正如我所尝试的,通过 keytool 我可以创建一个密钥库,并且要访问这个密钥库,我必须设置一个密码。此外,要访问每个证书条目,我必须设置一个密码。密钥库和条目是否必须使用相同的密码?如果不是(我认为这样假设是合理的)为什么是以下代码:
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
给我以下例外?
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
是访问myPersonal.keystore
我通过 keytool 创建的密钥库的密码。其中有 2 个条目,用于证书,1 个 DSA 和 1 个 RSA。每个人都有一个与密钥库(以及彼此)不同的密码。现在代码是正确的,因为如果我使用具有与密钥库相同密码的单个证书条目的密钥库,则没有异常并且程序运行正常。
那么这里的问题是什么?我不应该有不同的密码?我不应该有很多证书吗?要不然是啥?