Java 密钥库无法识别证书

Java 密钥库无法识别证书,java,ssl,keystore,jsse,Java,Ssl,Keystore,Jsse,我一直在努力将2个SSL证书嵌入到我的java代码中,下面的代码没有生成任何错误,但是当我尝试访问需要这些证书的API时,我得到了一个错误。我显然出了点问题,但在花了大量时间之后,我无法解决问题 下面是我正在使用的代码,错误如下 InputStream certInIssue = ClassLoader.class.getResourceAsStream("/resources/SSLCerts/Certificate1.cer"); InputStrea

我一直在努力将2个SSL证书嵌入到我的java代码中,下面的代码没有生成任何错误,但是当我尝试访问需要这些证书的API时,我得到了一个错误。我显然出了点问题,但在花了大量时间之后,我无法解决问题

下面是我正在使用的代码,错误如下

    InputStream certInIssue =
            ClassLoader.class.getResourceAsStream("/resources/SSLCerts/Certificate1.cer");
    InputStream certInRoot =
            ClassLoader.class.getResourceAsStream("/resources/SSLCerts/Certificate.cer");

    try {
        KeyStore keystore;

        keystore = KeyStore.getInstance(KeyStore.getDefaultType());

        keystore.load(null, null);

        String password = "R9NNXVSqemsghmvZxkcWTfzCr3pDv5D2";

        String tempDir = "C:/Temp/";

        BufferedInputStream bis = new BufferedInputStream(certInIssue);
        CertificateFactory cf = CertificateFactory.getInstance("X.509");
        while (bis.available() > 0) {
            java.security.cert.Certificate cert = cf.generateCertificate(bis);
            keystore.setCertificateEntry("SSLIssue", cert);
        }

        bis = new BufferedInputStream(certInRoot);
        cf = CertificateFactory.getInstance("X.509");
        while (bis.available() > 0) {
            java.security.cert.Certificate cert = cf.generateCertificate(bis);
            keystore.setCertificateEntry("SSLRoot", cert);
        }

        certInIssue.close();
        certInRoot.close();

        OutputStream out = new FileOutputStream(tempDir + "keyserverstore.keystore");
        keystore.store(out, password.toCharArray());
        out.close();

        keystore.load(new FileInputStream(tempDir + "keyserverstore.keystore"),
                            password.toCharArray());

    } catch (KeyStoreException | CertificateException | IOException | NoSuchAlgorithmException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
但我有一个例外:

io.joshworks.restclient.http.exceptions.RestClientException:
javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

在这之后,你对密钥库做了什么?我正在尝试获取一个令牌,以便可以访问API。之后,我猜当我调用代码访问网站以获取令牌时,它会自动使用密钥库,我猜这是不对的?叹气。在此之后,您在代码中对密钥库做了什么?我猜加载的密钥库不会自动引用。您真的希望某个未知的软件自动加载名为
keyserverstore.keystore
?或者您的本地
KeyStore
变量神奇地传播到其范围之外?之后您对KeyStore做了什么?我正在尝试获取令牌以便访问API。之后,我猜当我调用代码访问网站以获取令牌时,它会自动使用密钥库,我猜这是不对的?叹气。在此之后,您在代码中对密钥库做了什么?我猜加载的密钥库不会自动引用。您真的希望某个未知的软件自动加载名为
keyserverstore.keystore
?或者您的本地
密钥库
变量神奇地传播到其范围之外?