Не удается получить доступ к Buckets на S3 с помощью API-интерфейса AWS S3 Java с использованием HTTPS - PullRequest
0 голосов
/ 03 июля 2019

Пытаясь получить доступ к нашему локальному хранилищу S3, я впервые столкнулся с проблемой с отсутствующим сертификатом:

Исключение в потоке "main" com.amazonaws.SdkClientException: Невозможно выполнить запрос HTTP: sun.security.validator.ValidatorException: сбой построения пути PKIX: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации для запрошенной цели

Отключение проверки сертификата:

System.setProperty (SDKGlobalConfiguration.DISABLE_CERT_CHECKING_SYSTEM_PROPERTY, "true");

Мне удалось «подключиться» к серверу.Но это не дает никаких результатов (или пустой список), используя код ниже.Пока довольно просто.

И конечная точка, и имя корзины должны быть правильными, так как я вырезал и вставил их из моего (рабочего) браузера S3.

Кажется, что учетные данныечтобы быть правым, также, как я бегу в 404, когда я испортил это.Опять же - скопировал их из y S3 broswer.

Используя браузер S3, я могу получить доступ к корзине, добавить файлы и т. Д.

При запуске List<Bucket> buckets = s3Client.listBuckets(); он просто возвращает пустой список -без каких-либо исключений.

Вывод на консоль:

Juli 03, 2019 8:48:07 NACHM.com.amazonaws.http.AmazonHttpClient createSocketFactoryRegistry ПРЕДУПРЕЖДЕНИЕ. Проверка SSL-сертификата для конечных точек была явно отключена.Juli 03, 2019 8:48:08 NACHM.com.amazonaws.auth.profile.internal.BasicProfileConfigLoader loadProfiles ВНИМАНИЕ: имя вашего профиля содержит префикс «профиля».Это считается частью имени профиля в Java SDK, поэтому вам нужно будет включить этот префикс в имя своего профиля, когда вы ссылаетесь на этот профиль из своего кода Java.Juli 03, 2019 8:48:08 NACHM.com.amazonaws.auth.profile.internal.BasicProfileConfigLoader loadProfiles ВНИМАНИЕ: имя вашего профиля содержит префикс «профиля».Это считается частью имени профиля в Java SDK, поэтому вам нужно будет включить этот префикс в имя своего профиля, когда вы ссылаетесь на этот профиль из своего кода Java.03 июля 2019 г. 8:48:23 NACHM.com.amazonaws.http.AmazonHttpClient createSocketFactoryRegistry ПРЕДУПРЕЖДЕНИЕ: проверка SSL-сертификата для конечных точек была явно отключена.

Любой совет?

System.setProperty(SDKGlobalConfiguration.DISABLE_CERT_CHECKING_SYSTEM_PROPERTY, "true");
        String accessKey = "myaccess";
        String secretKey = "mysecret";

        AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
        ClientConfiguration clientConfig = new ClientConfiguration();
        clientConfig.setProtocol(Protocol.HTTPS);

        EndpointConfiguration endpointConfig = new EndpointConfiguration("endpoint.com", Regions.EU_CENTRAL_1.getName());
        AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(credentials))
                //.withRegion(defaultRegion)
                .withEndpointConfiguration(endpointConfig)
                .build();

        List<Bucket> buckets = s3Client.listBuckets();
        for (Bucket bucket : buckets) { 
                System.out.println(
                        bucket.getName() + 
                        "\t" +
                        StringUtils.fromDate(bucket.getCreationDate())
                );
        }

При запуске List<Bucket> buckets = s3Client.listBuckets(); он просто возвращает пустой список - без каких-либо исключений.

В корне этой корзины есть (по данным браузера S3) 2 файла.

Вывод на консоль:

Juli 03, 2019 8:48:07 NACHM.com.amazonaws.http.AmazonHttpClient createSocketFactoryRegistry ПРЕДУПРЕЖДЕНИЕ. Проверка SSL-сертификата для конечных точек была явно отключена.Juli 03, 2019 8:48:08 NACHM.com.amazonaws.auth.profile.internal.BasicProfileConfigLoader loadProfiles ВНИМАНИЕ: имя вашего профиля содержит префикс «профиля».Это считается частью имени профиля в Java SDK, поэтому вам нужно будет включить этот префикс в имя своего профиля, когда вы ссылаетесь на этот профиль из своего кода Java.Juli 03, 2019 8:48:08 NACHM.com.amazonaws.auth.profile.internal.BasicProfileConfigLoader loadProfiles ВНИМАНИЕ: имя вашего профиля содержит префикс «профиля».Это считается частью имени профиля в Java SDK, поэтому вам нужно будет включить этот префикс в имя своего профиля, когда вы ссылаетесь на этот профиль из своего кода Java.03 июля 2019 г. 8:48:23 NACHM.com.amazonaws.http.AmazonHttpClient createSocketFactoryRegistry ПРЕДУПРЕЖДЕНИЕ: проверка SSL-сертификата для конечных точек была явно отключена.

Любой совет?

1 Ответ

0 голосов
/ 12 июля 2019

так что я наконец отвечаю сам.

Отключение проверки конечной точки с помощью

System.setProperty(SDKGlobalConfiguration.DISABLE_CERT_CHECKING_SYSTEM_PROPERTY, "true");

работает как брелок.У этой проблемы было две причины:

  1. У моей учетной записи не было разрешений на перечисление сегментов (не знаю почему, при доступе к AWS S3 не произойдет).
  2. Я не сделалне правильно указывать имя сегмента, так как мне пришлось добавить начальный "/" к имени блока.

Точка 1 может быть решена при доступе к списку объектов:

ObjectListing objects = conn.listObjects("/my_bucket_name");

Точка 2, очевидно, может быть решена путем добавления начального "/" к имени корзины.

Приветствия,

Олли

...