0

我想知道如果在指定的密钥库中找不到必要的密钥或如何设置密钥库检查顺序,是否有任何方法可以检查默认密钥库。

例如 - 我有两个密钥库:

  • 全局 java 默认密钥库(如 cacerts)
  • “Folder1/mykestore.jks”包含我上传的自签名证书。

我在我的程序中设置属性:

System.setProperty("javax.net.ssl.keyStore","Folder1/mykeystore.jks");

并且程序尝试连接来自 mykeystore.jks 的证书,但没有找到它,因此抛出异常。现在我想强制我的程序检查全局默认密钥库或任何其他密钥库(如果存在)。

我需要在我的应用程序中执行此操作,用户可以在其中定义一些邮箱并可以上传自签名证书。应用程序适用于自签名证书,但不适用于带有官方证书的公共邮箱(如 GMail),因为它们在 mykestore.jks 中不存在。(当我尝试在没有指定 keyStore 属性的情况下进行连接时,它会毫无问题地连接)

可能最简单的方法是:

try{
  System.setProperty("javax.net.ssl.keyStore","Folder1/mykeystore.jks");
  store.connect(host,login,password)
catch{
  //Set default keystore
  //try store.connect() again
}

但问题是我不知道如何设置默认的 java 密钥库(它是一个 gralils 应用程序,我不知道默认密钥库的路径)。

也许还有其他更好的方法,你可以推荐我吗?

问候, 阿图尔

4

1 回答 1

1

最简单的方法是从 JDK 复制默认密钥库并将其用作应用程序的初始密钥库,并根据需要向其中添加更多证书。

于 2013-08-03T02:00:06.447 回答