Невозможно выполнить простую загрузку по HTTPS.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Невозможно выполнить простую загрузку по HTTPS.

Сообщение Anonymous »

Я запускаю некоторый POC dbt spark и при этом обнаружил, что он не может извлекать зависимости. Чтобы диагностировать проблему, я написал базовую программу, которая загружает зависимости. К моему ужасу, это не работает.
Но переход по URL-адресу в моем браузере работает. И скручивание файла работает:

Код: Выделить всё

curl https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-spark-extensions-3.5_2.12/1.5.2/iceberg-spark-extensions-3.5_2.12-1.5.2.pom -O
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100  5911  100  5911    0     0  56927      0 --:--:-- --:--:-- --:--:-- 57388
Почему именно Java не работает? Я вижу Global Sign CA в моей связке ключей Mac OS.
Диагностическая программа:

Код: Выделить всё

String fileUrl = "https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-spark-extensions-3.5_2.12/1.5.2/iceberg-spark-extensions-3.5_2.12-1.5.2.pom";
String outputFilePath = "iceberg-spark-extensions-3.5_2.12-1.5.2.pom";

HttpClient client = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_2)
.build();

HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(fileUrl))
.GET()
.build();

try {
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());

if (response.statusCode() == 200) {
Files.write(Paths.get(outputFilePath), response.body(), StandardOpenOption.CREATE);
System.out.println("File downloaded successfully: " + outputFilePath);
} else {
System.out.println("Failed to download file. HTTP status code: " + response.statusCode());
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
Вывод:

Код: Выделить всё

javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:956)
at java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:133)
at com.zscaler.zfabric.management.services.Main.main(Main.java:98)
Чтобы заставить Java использовать центр сертификации моей системы, я использую:

Код: Выделить всё

export JAVA_TOOL_OPTIONS="-Djavax.net.ssl.trustStoreType=KeychainStore"
Я также пытался найти Global Sign CA в доступе к цепочке ключей, экспортировать его и импортировать в сертификаты JDK, не выполняя экспорт JAVA_TOOL_OPTIONS. Тем не менее, это не работает.
Что может быть не так?

Подробнее здесь: https://stackoverflow.com/questions/791 ... s-download
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»