Sun Java KeyManagerFactory和空密码

我们在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行得到除以零的错误。

有谁知道为什么会这样? 没有密码就不能使用证书吗? 谢谢

由于PKCS12包含私钥,因此您应始终拥有密码。 我认为太阳偶然强制执行这个:)

对于所有Keystore API,商店和私钥都需要密码。 如果您真的不想处理配置或用户交互,只需在任何地方使用默认密码“changeit”。

这是一个错误:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6415637

解决方法是设置密码。