【问题标题】:Sun Java KeyManagerFactory and null passwordsSun Java KeyManagerFactory 和空密码
【发布时间】:2010-12-21 07:20:53
【问题描述】:

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

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

【问题讨论】:

  • 没错,你必须有密码。

标签: java keystore pkcs#12 divide-by-zero


【解决方案1】:

因为 PKCS12 包含私钥,所以您应该始终拥有密码。我认为 Sun 无意中强制执行此操作 :)

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

【讨论】:

  • Sun 有意强制执行此操作,以免您不小心忘记它的重要性。
【解决方案2】:

这是一个错误:

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

解决方法是设置密码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    相关资源
    最近更新 更多