Спецификация IDE c Исключение SSL рукопожатия - PullRequest
2 голосов
/ 28 января 2020

Я получаю исключение SSL Handshake при попытке запустить код в JDeveloper. Однако точно такой же код работает в среде IDE Netbeans.

Ошибка:

Причина: sun.security.validator.ValidatorException: Ошибка построения пути PKIX: sun. security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации для запрошенной цели

Я знаю, что ошибка возникает, скорее всего, когда в доверенном хранилище отсутствует соответствующий сертификат. Это не тот случай, так как я вижу сертификат, добавляемый в качестве доверенного сертификата после включения журналов javax.net.debug=ssl. Кроме того, это не может быть простым случаем, когда сертификат недоступен, поскольку точно такой же код работает нормально на Netbeans с тем же складом доверенных сертификатов и версией java.

Код выглядит следующим образом:

package client;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.Response;

import java.nio.charset.StandardCharsets;
import java.util.Base64;
import javax.ws.rs.client.Entity;

public class Class1 {
    public Class1() {
        super();
    }
    private static final String resourceUrl = "My/url";

    public static void main(String[] args) {
        Response headers = null;
        System.out.println(System.getProperty("java.version"));
        System.setProperty("javax.net.ssl.trustStore","C:\\path\\to\\jks");
        System.setProperty("javax.net.ssl.trustStorePassword","passphrase");
        System.setProperty("javax.net.debug","ssl");

        try {
            Client client = ClientBuilder.newClient();
            String auth = "username:password";
            byte[] authBytes = auth.getBytes(StandardCharsets.UTF_8);
            String encodedAuth = Base64.getEncoder().encodeToString(authBytes);
            String input = "JSON_input_payload";

            headers = client
                  .target(resourceUrl)
                  .request()
                  .header("Authorization", "Basic " + encodedAuth)                   
                  .post(Entity.json(input));
        }
        catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println("Response = " + headers);
    }
}

Есть идеи? Возможно, мне нужно проверить некоторые IDE-файлы конфигурации c? Не могу понять, что искать в конфигурационных файлах Jdev, поэтому разместил вопрос здесь.

Версия Netbeans 8.2
Версии JDev, на которых я это проверял, 12.2.1.3.0 и 12.2.1.4.0
ОС - Windows 10.
java.version одинакова в обеих IDE, т. Е. 1.8.0_151. Я также попытался запустить их в версии 1.8.0_221, но получил те же результаты.

...