我们在Sun JRE 1.6中遇到了KeyManagerFactory的问题。我们使用类似以下的代码上传和使用p12格式的证书:
KeyStore keyStore = KeyStore.getInstance(PKCS12);
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(SUN_X509);
InputStream certificateFile = getSSLCertificate();
String certificatePassword = getSSLCertificatePassword();
keyStore.load(certificateFile, certificatePassword);
keyManagerFactory.init(keyStore, certificatePassword);
当证书密码存在时,此代码可以正常工作。但是当证书密码为空(因此证书不受密码保护)时,我们会从keyManagerFactory.init行获得除以零错误。
有谁知道为什么会这样?没有密码就不能使用证书吗? 感谢
答案 0 :(得分:3)
因为PKCS12包含私钥,所以您应始终拥有密码。我认为Sun不小心强制执行了这个:)
对于所有Keystore API,商店和私钥都需要密码。如果您真的不想处理配置或用户交互,只需在任何地方使用默认密码“changeit”。
答案 1 :(得分:3)