Keystore не распознает сертификаты - PullRequest
1 голос
/ 17 февраля 2020

Я работал над встраиванием 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...