首页 > 解决方案 > keystore.load() 有效,但 loadKeyMaterial() 对于同一个密钥库失败

问题描述

我正在尝试对需要证书的 Axis2 API 进行 API 调用。我将它导入到位于 /lib/security 中的 java 密钥库。我通过几种方法验证了证书已成功导入(方法也在下面的代码中,证书不为空)。

我可以使用默认密码从密钥库获取证书。但是当我尝试为 sslContext 使用相同的密钥库和密码时,我得到UnrecoverableKeyException:无法恢复密钥异常。有人可以帮助我吗?

            final char sep = File.separatorChar;
            File dir = new File(System.getProperty("java.home") + sep + "lib" + sep + "security");
            File file = new File(dir, "cacerts");
            InputStream localCertIn = new FileInputStream(file);
            

            String password = "changeit" ;
            KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
            keystore.load(localCertIn, password.toCharArray());

            String alias = "alias name";
            X509Certificate certificate = (X509Certificate)keystore.getCertificate(alias);
            //Certificate is not null

            SSLContext sslContext = SSLContexts.custom()
                    .loadKeyMaterial(keystore,  password.toCharArray())
                    .build();
            //Throws the following error

标签: javasslkeystoreaxis2

解决方案


推荐阅读