Error occurred during create target metadata

I'm not sure this is a bug or a feature request, just a question. Apologies if this is the wrong way to ask for help or if I missed a related discussion. Also I'm a DBeaver and Athena newb....

I’m not sure this is a bug or a feature request, just a question. Apologies if this is the wrong way to ask for help or if I missed a related discussion.
Also I’m a DBeaver and Athena newb…

Is your feature request related to a problem? Please describe.
I am facing issues creating a table using the Athena drivers (https://s3.amazonaws.com/athena-downloads/drivers/JDBC/SimbaAthenaJDBC-2.0.16.1000/AthenaJDBC42.jar). Good chance it’s user error but I cant find any guides. My connection works for selects etc.

Process I’m trying in DBeaver:

  • right click on Tables(in the Athena DB)
  • Import Data
    • point to a local csv
  • check mappings
  • Set data transfer settings as is > Next
  • confirm > Start
Error occurred during Create target metadata

Reason:
SQL Error [100071] [HY000]: [Simba][AthenaJDBC](100071) An error has been thrown from the AWS Athena client. line 1:14: no viable alternative at input 'CREATE TABLE "default"' [Execution ID not available]
SQL Error [100071] [HY000]: [Simba][AthenaJDBC](100071) An error has been thrown from the AWS Athena client. line 1:14: no viable alternative at input 'CREATE TABLE "default"' [Execution ID not available]
  [Simba][AthenaJDBC](100071) An error has been thrown from the AWS Athena client. line 1:14: no viable alternative at input 'CREATE TABLE "default"' [Execution ID not available]
  [Simba][AthenaJDBC](100071) An error has been thrown from the AWS Athena client. line 1:14: no viable alternative at input 'CREATE TABLE "default"' [Execution ID not available]
    line 1:14: no viable alternative at input 'CREATE TABLE "default"' (Service: AmazonAthena; Status Code: 400; Error Code: InvalidRequestException; Request ID: blah; Proxy: null)
    line 1:14: no viable alternative at input 'CREATE TABLE "default"' (Service: AmazonAthena; Status Code: 400; Error Code: InvalidRequestException; Request ID: blah; Proxy: null)

Describe the solution you’d like
It would be great to be able to get this done via DBeaver.

Describe alternatives you’ve considered
Using the AWS console, first you need to stage your data file(s), then there’s a wizard type thing. Specifying field types are awkward though. There are other ways to manage this using crawlers too.

Additional context
The source data for he new table needs to be in S3, and I think this might be the step that DBeaver is not doing (possibly my fault). I’m fairly certain that my user has write access to the S3 location defined in the Connection settings > S3 Location but I think that location is for staging the query results, not sourcing new tables. Perhaps there is another property I can set to define an upload bucket/prefix?

From the documentation and fiddling in the UI, after the data has been staged the create table SQL would need to resemble:

CREATE EXTERNAL TABLE IF NOT EXISTS integer_table (
    KeyColumn STRING,
    Column1 INT)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = ',',
  'field.delim' = ','
)LOCATION 's3://athena-examples/integer_table/'

Can DBeaver handle this scenario?
Thanks very much

Форум КриптоПро
 » 
Средства криптографической защиты информации
 » 
КриптоПро JCP, JavaTLS
 » 
Ошибка «Error occurred during building the certification path for the target» при подписании


Offline

SyperOleg2021

 


#1
Оставлено
:

3 ноября 2021 г. 16:54:22(UTC)

SyperOleg2021

Статус: Новичок

Группы: Участники

Зарегистрирован: 03.11.2021(UTC)
Сообщений: 7
Российская Федерация

Сказал(а) «Спасибо»: 2 раз

Здравствуйте! Есть следующая проблема:

Пытаюсь подписать строку которая приходит от сервиса «Честный ЗНАК».
Использовал их руководство: TRUE API (596 страница)

Изменил код из руководства:

Код:


    public String signByCert(String input)
            throws UnrecoverableKeyException, KeyStoreException, NoSuchAlgorithmException, CAdESException {
        List<X509CertificateHolder> chain = new ArrayList<>();
        List<Certificate> certs =
                Arrays.asList(keyStore.getCertificateChain(appSettings.getCryptoPro().getAlias()));

        List<X509Certificate> normalizedCerts = new ArrayList<>();
        certs.forEach(elem -> {
            normalizedCerts.add((X509Certificate) elem);
        });

        certs.forEach(cert -> {
            try {
                chain.add(new X509CertificateHolder(cert.getEncoded()));
            } catch (IOException | CertificateEncodingException e) {
                log.error("Error while building certificate chain", e);
            }
        });
        PrivateKey privateKey = (PrivateKey) (keyStore.getKey(appSettings.getCryptoPro().getAlias(),
                appSettings.getCryptoPro().getPassword().toCharArray()));
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        CAdESSignature signature = new CAdESSignature(false);
        signature.setCertificateStore(new CollectionStore(chain));
        final Hashtable table = new Hashtable();
        Attribute attr = new Attribute(CMSAttributes.signingTime,
                new DERSet(new Time(new Date())));
        table.put(attr.getAttrType(), attr);
        AttributeTable attrTable = new AttributeTable(table);
        signature.addSigner(JCP.PROVIDER_NAME, JCP.GOST_DIGEST_OID, JCP.GOST_EL_DH_OID,
                privateKey, normalizedCerts, CAdESType.CAdES_BES, null, false, attrTable, null);
        signature.open(out);
        signature.update(input.getBytes(StandardCharsets.UTF_8));
        signature.close();
        byte[] signedCode = out.toByteArray();
        return Arrays.toString(signedCode);
    }

Однако на строке «signature.addSigner(….)» получаю исключение «Error occurred during building the certification path for the target».

В цепочках всего один сертификат полученный на http://testca2012.cryptopro.ru/ui/

Помогите разрешить проблему.


Вверх


Offline

Евгений Афанасьев

 


#2
Оставлено
:

3 ноября 2021 г. 17:04:47(UTC)

Евгений Афанасьев

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,740
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 647 раз в 610 постах

Здравствуйте. Ошибка говорит, что не удалось построить цепочку. Скорее всего, в normalizedCerts нет промежуточного и/или корневого сертификата. Кроме того, корневой должен быть установлен в cacerts.

Тех. поддержка
База знаний
Логирование JCP
Логирование JTLS
Тест JCP и сбор диаг. информации
Скачать JCP, JCSP и JTLS
Скачать Android CSP + SDK


Вверх


Offline

SyperOleg2021

 


#3
Оставлено
:

4 ноября 2021 г. 11:22:50(UTC)

SyperOleg2021

Статус: Новичок

Группы: Участники

Зарегистрирован: 03.11.2021(UTC)
Сообщений: 7
Российская Федерация

Сказал(а) «Спасибо»: 2 раз

Автор: Евгений Афанасьев Перейти к цитате

Здравствуйте. Ошибка говорит, что не удалось построить цепочку. Скорее всего, в normalizedCerts нет промежуточного и/или корневого сертификата. Кроме того, корневой должен быть установлен в cacerts.

Да, там сертификаты добавленные только через КриптоПро scp (В данном случае 1). Могу ли я добавить корневые сертификаты в хранилище динамически или они обязательно должны быть в caserts?

Код получения сертификатов из хранилища CSP:

Код:


    public CryptoProService(YAMLAppSettings appSettings)
            throws CertificateException, IOException, NoSuchAlgorithmException,
            KeyStoreException, NoSuchProviderException, UnrecoverableKeyException {
        this.appSettings = appSettings;
        System.setProperty("file.encoding", "UTF-8");
        Security.addProvider(new JCSP());
        Security.addProvider(new RevCheck());
        Security.addProvider(new CryptoProvider());

        keyStore = KeyStore.getInstance(appSettings.getCryptoPro().getLocation(), "JCSP");
        keyStore.load(null, null);
        X509Certificate certificate = (X509Certificate)
                keyStore.getCertificate(appSettings.getCryptoPro().getAlias());
        if (certificate == null) {
            RuntimeException certNotFound = new RuntimeException("Cert not found");
            log.error("Certificate by alias {} not found", appSettings.getCryptoPro().getAlias(), certNotFound);
            throw certNotFound;
        }
    }

Вверх


Offline

SyperOleg2021

 


#4
Оставлено
:

4 ноября 2021 г. 14:04:49(UTC)

SyperOleg2021

Статус: Новичок

Группы: Участники

Зарегистрирован: 03.11.2021(UTC)
Сообщений: 7
Российская Федерация

Сказал(а) «Спасибо»: 2 раз

Загрузил сертификаты в cacerts и в цепочку сертификатов, однако теперь получаю следующую ошибку:

Код:


Caused by: ru.CryptoPro.AdES.exception.AdESException: Root certificate: serial 3453c7b0071add9ab4c5fc8a8451f97a7, subject CN="Тестовый головной УЦ ООО "КРИПТО-ПРО" ГОСТ 2012 (УЦ 2.0)", O="ООО "КРИПТО-ПРО"", STREET=ул. Сущёвский вал д. 18, L=Москва, ST=77 Москва, OID.1.2.643.100.1=#120D31303337373030303835343434, EMAILADDRESS=info@cryptopro.ru, OID.1.2.643.100.4=#120A37373137313037393931, C=RU, issuer CN="Тестовый головной УЦ ООО "КРИПТО-ПРО" ГОСТ 2012 (УЦ 2.0)", O="ООО "КРИПТО-ПРО"", STREET=ул. Сущёвский вал д. 18, L=Москва, ST=77 Москва, OID.1.2.643.100.1=#120D31303337373030303835343434, EMAILADDRESS=info@cryptopro.ru, OID.1.2.643.100.4=#120A37373137313037393931, C=RU, not before Mon Jul 26 12:18:42 YEKT 2021, not after Sat Jul 26 12:18:42 YEKT 2036 is untrusted
	at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.validateIfRootCertificateInTrustStoreAndAddToChain(Unknown Source)
	at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.build(Unknown Source)
	at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.build(Unknown Source)
	... 32 common frames omitted

Вверх


Offline

SyperOleg2021

 


#5
Оставлено
:

4 ноября 2021 г. 14:54:45(UTC)

SyperOleg2021

Статус: Новичок

Группы: Участники

Зарегистрирован: 03.11.2021(UTC)
Сообщений: 7
Российская Федерация

Сказал(а) «Спасибо»: 2 раз

Как выяснилось использовалась не та jdk. Теперь вызывается следующее исключение:

Код:


Caused by: ru.CryptoPro.CAdES.exception.CAdESException: digest OID is null
	at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
	at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
	at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
	at ru.work.markserver.service.CryptoProService.signByCert(CryptoProService.java:122)
	at ru.work.markserver.service.CryptoProService.<init>(CryptoProService.java:71)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:78)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211)
	... 21 common frames omitted

Также добавил:

Код:


        System.setProperty("ru.CryptoPro.reprov.enableCRLDP", "true");
        System.setProperty("com.sun.security.enableCRLDP", "true");
        System.setProperty("com.ibm.security.enableCRLDP", "true");

Прикладываю лог с момента вызова функции «signature.addSigner(…)»
crypto_err.log (109kb) загружен 4 раз(а).
Описание проекта

  1. Минимальный набор необходимых библиотек КриптоПРО подключён через локальный maven репозиторий;
  2. Используется spring boot framework;
  3. jdk 16.6 (oracle);
  4. Никаких аргументов запуска явы не прописывалось (из коробки КриптоПро смог считать сертификаты из своего хранилища, поэтому решил, что в этом нет необходимости);
  5. Подключены зависимости org.bouncycastle версии 1.69;
  6. Используется КриптоПро Java CSP и JTLS (5.0.40363-A, для JVM версии 10 и выше)
  7. В системе установлен CryptoPro CSP, а не CryptoPro Java CSP.

Отредактировано пользователем 5 ноября 2021 г. 19:38:41(UTC)
 | Причина: добавил описание проекта


Вверх


Offline

SyperOleg2021

 


#6
Оставлено
:

6 ноября 2021 г. 12:55:43(UTC)

SyperOleg2021

Статус: Новичок

Группы: Участники

Зарегистрирован: 03.11.2021(UTC)
Сообщений: 7
Российская Федерация

Сказал(а) «Спасибо»: 2 раз

Автор: Евгений Афанасьев Перейти к цитате

Здравствуйте. Ошибка говорит, что не удалось построить цепочку. Скорее всего, в normalizedCerts нет промежуточного и/или корневого сертификата. Кроме того, корневой должен быть установлен в cacerts.

Как правильно подгрузить корневые сертификаты в цепочку сертификатов? Сейчас я их подгружаю из файлов, так как из метода:

Код:


KeyStore keyStore = KeyStore.getInstance("REGISTRY", JCSP.PROVIDER_NAME);
keyStore.getCertificateChain(appSettings.getCryptoPro().getAlias()))

Я получаю только один сертификат полученный на http://testca2012.cryptopro.ru/ui/. А не 3 как должно быть.

Полагаю ошибка «digest OID is null» связана этим


Вверх


Offline

Евгений Афанасьев

 


#7
Оставлено
:

8 ноября 2021 г. 19:36:57(UTC)

Евгений Афанасьев

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,740
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 647 раз в 610 постах

1. В первом примере вы передаете в addSigner имя провайдера JCP, затем ниже пишете, что используете KeyStore.getInstance(«REGISTRY», JCSP.PROVIDER_NAME) — тут же JCSP. Нужно определиться с провайдером и использовать какой-то один.
2. Ошибка digest OID is null больше похожа на то, что не передается OID алгоритма хеширования в addSigner, хотя в первом примере у вас есть signature.addSigner(JCP.PROVIDER_NAME, JCP.GOST_DIGEST_OID. Это пример актуален? Какая версия JCP/JCSP используется? OID алгоритма ключа соответствует OID алгоритма хеширования (вы передаете OID алгоритма хеша ГОСТ 2001, закрытый ключ тоже ГОСТ 2001)? Попробуйте передать null вместо OID алгоритма хеша и ключа, т.е. signature.addSigner(JCP.PROVIDER_NAME, null, null, …).
3. keyStore.getCertificateChain вернет все сертификаты из ключевого контейнера, тогда как keyStore.getCertificate вернет сертификат подписи. Если в контейнере один сертификат, keyStore.getCertificateChain, соответственно, вернет только его. Именно цепочку он не возвращает и ее не строит. Поэтому «Я получаю только один сертификат полученный на http://testca2012.cryptopro.ru/ui/. А не 3 как должно быть.».
4. «Как правильно подгрузить корневые сертификаты в цепочку сертификатов?» — корневые сертификаты надо ставить в cacerts. Использовать при этом можно известные корневые: Минкомсвязь и др. В ключвом контейнере может и не быть корневого.

Из лога:
09:49:20.022 | [main] | DEBUG | ru.CryptoPro.JCP.tools.JCPLogger — Private key algorithm: GOST3410DH_2012_256
09:49:20.023 | [main] | DEBUG | ru.CryptoPro.JCP.tools.JCPLogger — Evaluated user digest OID: 1.2.643.2.2.9
То есть ключ у вас ГОСТ 2012 256, а OID алгоритма хеширования — 1.2.643.2.2.9 (ГОСТ 2001), «Попробуйте передать null вместо OID алгоритма хеша и ключа, т.е. signature.addSigner(JCP.PROVIDER_NAME, null, null, …)» или передайте signature.addSigner(JCP.PROVIDER_NAME, GOST_DIGEST_2012_256_OID, JCP.GOST_PARAMS_SIG_2012_256_KEY_OID, …).

Отредактировано пользователем 8 ноября 2021 г. 19:45:27(UTC)
 | Причина: Не указана

Тех. поддержка
База знаний
Логирование JCP
Логирование JTLS
Тест JCP и сбор диаг. информации
Скачать JCP, JCSP и JTLS
Скачать Android CSP + SDK


Вверх


Offline

SyperOleg2021

 


#8
Оставлено
:

8 ноября 2021 г. 21:35:24(UTC)

SyperOleg2021

Статус: Новичок

Группы: Участники

Зарегистрирован: 03.11.2021(UTC)
Сообщений: 7
Российская Федерация

Сказал(а) «Спасибо»: 2 раз

Автор: Евгений Афанасьев Перейти к цитате

1. В первом примере вы передаете в addSigner имя провайдера JCP, затем ниже пишете, что используете KeyStore.getInstance(«REGISTRY», JCSP.PROVIDER_NAME) — тут же JCSP. Нужно определиться с провайдером и использовать какой-то один.
2. Ошибка digest OID is null больше похожа на то, что не передается OID алгоритма хеширования в addSigner, хотя в первом примере у вас есть signature.addSigner(JCP.PROVIDER_NAME, JCP.GOST_DIGEST_OID. Это пример актуален? Какая версия JCP/JCSP используется? OID алгоритма ключа соответствует OID алгоритма хеширования (вы передаете OID алгоритма хеша ГОСТ 2001, закрытый ключ тоже ГОСТ 2001)? Попробуйте передать null вместо OID алгоритма хеша и ключа, т.е. signature.addSigner(JCP.PROVIDER_NAME, null, null, …).
3. keyStore.getCertificateChain вернет все сертификаты из ключевого контейнера, тогда как keyStore.getCertificate вернет сертификат подписи. Если в контейнере один сертификат, keyStore.getCertificateChain, соответственно, вернет только его. Именно цепочку он не возвращает и ее не строит. Поэтому «Я получаю только один сертификат полученный на http://testca2012.cryptopro.ru/ui/. А не 3 как должно быть.».
4. «Как правильно подгрузить корневые сертификаты в цепочку сертификатов?» — корневые сертификаты надо ставить в cacerts. Использовать при этом можно известные корневые: Минкомсвязь и др. В ключвом контейнере может и не быть корневого.

Из лога:
09:49:20.022 | [main] | DEBUG | ru.CryptoPro.JCP.tools.JCPLogger — Private key algorithm: GOST3410DH_2012_256
09:49:20.023 | [main] | DEBUG | ru.CryptoPro.JCP.tools.JCPLogger — Evaluated user digest OID: 1.2.643.2.2.9
То есть ключ у вас ГОСТ 2012 256, а OID алгоритма хеширования — 1.2.643.2.2.9 (ГОСТ 2001), «Попробуйте передать null вместо OID алгоритма хеша и ключа, т.е. signature.addSigner(JCP.PROVIDER_NAME, null, null, …)» или передайте signature.addSigner(JCP.PROVIDER_NAME, GOST_DIGEST_2012_256_OID, JCP.GOST_PARAMS_SIG_2012_256_KEY_OID, …).

1. Хочу использовать JCSP, переключался между JCP и JСSP в надежде исправить ошибку. То что в addSigners использовалось JSP заметил и заменил — результата не дало;
2.

  1. Версия JCSP — 5.0.42188-A, JCP — 2.0.42188-A;
  2. Закрытый ключ подписан GOST R 34.10-2012 DH 256 bits;
  3. JCP.GOST_DIGEST_OID и GOST_EL_KEY_OID пытался менять (например на GOST_DH_2012_256_NAME, GOST_EL_2012_256_NAME и др комбинации) — таже ошибка «digest OID is null». null, null как и GOST_DIGEST_2012_256_OID, GOST_PARAMS_SIG_2012_256_KEY_OID тоже результата не дали;

3. Т.е. список сертификатов нужно подгружать со стороннего хранилища, где есть вся цепочка?
4. В cacerts сертификаты добавлены. Думаю я неправильно сформулировал вопрос: при составлении цепочки сертификатов, есть ли какие-то требования к их загрузке (из контейнера сертификатов JCP или из хранилища доверенных Windows) или просто необходим список где будут все сертификаты которые учувствуют в построении цепочки и не имеет значения откуда они будут загружены?

Появился вопрос: org.bouncycastle.* обязательно использовать из скаченного архива (из папки dependencies) или же допустимо тянуть зависимости с maven репозитория?

Сейчас все сертификаты поместил в хранилище сертификатов JCSP, если в цепочке хранить только один сертификат, то получаю ту же ошибку «digest OID is null», а если все 3, то получаю исключение «Private key does not match public key», лог:

Код:


Caused by: java.lang.RuntimeException: Private key does not match public key; error codes: [108] 'Private key does not match public key', 
	at ru.work.markserver.service.NationalService.lambda$new$0(NationalService.java:36)
	at ru.work.markserver.provider.NationalCatalogProvider.updateToken(NationalCatalogProvider.java:73)
	at ru.work.markserver.service.NationalService.postInit(NationalService.java:43)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157)
	... 32 common frames omitted
Caused by: ru.CryptoPro.CAdES.exception.CAdESException: Private key does not match public key
	at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
	at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
	at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
	at ru.work.markserver.service.CryptoProService.signByCert(CryptoProService.java:125)
	at ru.work.markserver.service.NationalService.lambda$new$0(NationalService.java:33)
	... 41 common frames omitted
Caused by: ru.CryptoPro.CAdES.exception.CAdESException: Private key does not match public key
	... 46 common frames omitted
Disconnected from the target VM, address: '127.0.0.1:57909', transport: 'socket'

Process finished with exit code 1

По поводу актуальности: в коде менял только способ загрузки цепочки сертификатов, комбинации OID алгоритмов и в целом подгружал другие версии библиотеки (не для jdk10+ и отдельно JCP). На данный момент у меня исходный пример, за исключением того, что везде используется JCSP

Отредактировано пользователем 8 ноября 2021 г. 22:01:17(UTC)
 | Причина: По поводу актуальности…


Вверх


Offline

Евгений Афанасьев

 


#9
Оставлено
:

8 ноября 2021 г. 22:19:33(UTC)

Евгений Афанасьев

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,740
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 647 раз в 610 постах

1. «Хочу использовать JCSP» — тогда он должен быть провайдером по умолчанию. Поскольку вы используете версию для Java 10+, установка не производится и в java.security провайдеры, полагаю, не записаны. Если вы добавляете провайдеры с помощью Security.addProvider(), то JCSP должен быть выше JCP, тогда он станет работать по умолчанию:

Цитата:

Security.addProvider(new JCSP());
Security.addProvider(new JCP());
Security.addProvider(new RevCheck());

И его же надо указать в addSigner: addSigner(JCSP.PROVIDER_NAME, …), а не addSigner(JCP.PROVIDER_NAME, …)
2. Обычно достаточно использовать addSigner(provider, null, null, …) для автоопределения OID’ов. Приведите ошибку в этом случае.
3. «Т.е. список сертификатов нужно подгружать со стороннего хранилища, где есть вся цепочка?» — да. сертификаты можно подать из других мест, из файлов, хранилищ. Можно также использовать параметры

Цитата:

System.setProperty(«com.sun.security.enableAIAcaIssuers», «true»);
System.setProperty(«ru.CryptoPro.reprov.enableAIAcaIssuers», «true»);

Про них можно найти информацию на форуме по слову enableAIAcaIssuers, коротко — если а) они заданы, б) есть доступ в сеть и в) в AIA сертификатов есть ссылки на сертификаты центров сертификации, то сертификаты будут скачаны; однако корневой все равно должен быть в cacerts.
4. «есть ли какие-то требования» — нет, просто нужны объекты X509Certificate в списке, множество сертификатов (оно может быть и больше самой цепочки), который просто содержит нужные сертификаты (они будут найдены при построении цепочки).

«Появился вопрос: org.bouncycastle.* обязательно использовать из скаченного архива (из папки dependencies) или же допустимо тянуть зависимости с maven репозитория?» — из любого источника, главное — версия BC 1.60, как в dependencies (тут они для удобства, чтобы не искать):

Цитата:

bcprov-jdk15on-1.60.jar
bcpkix-jdk15on-1.60.jar


Проверьте:
1. провайдер, как в п.1;
2. версию BC, она должна быть 1.60;
3. сделайте addSigner(provider, null, null, …), вроде даже должна быть версия функции без OID хеша и OID ключа.
Если не поможет, приложите цепочку сертификатов, будем проверять и воспроизводить.

Отредактировано пользователем 8 ноября 2021 г. 22:22:01(UTC)
 | Причина: Не указана

Тех. поддержка
База знаний
Логирование JCP
Логирование JTLS
Тест JCP и сбор диаг. информации
Скачать JCP, JCSP и JTLS
Скачать Android CSP + SDK


Вверх

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.

SyperOleg2021

оставлено 08.11.2021(UTC)


Offline

SyperOleg2021

 


#10
Оставлено
:

8 ноября 2021 г. 22:27:50(UTC)

SyperOleg2021

Статус: Новичок

Группы: Участники

Зарегистрирован: 03.11.2021(UTC)
Сообщений: 7
Российская Федерация

Сказал(а) «Спасибо»: 2 раз

Проблема была в использовании библиотек org.bouncycastle.* не из архива, добавил необходимые библиотеки в локальный maven репозиторий и подписание заработало.

Теперь появилась другая проблема, при хешировании ожидается что-то вроде:

Код:


MIIa2QYJKoZIhvcNAQcCoIIayjCCGsYCAQExDjAMBggqh...JRLphTwbI4HQ==

Однако я получаю это:

Код:


0�	*�H��
��0�10*� 0�	*�H��
��$�WUVYERCGDCHJNHZMUMHQYDVGRBRGTF      ��0�/0�ܠ�ԭ6�J�5)'
�0
*�0�V10*�d
77171079911 0	*�H��
	info@cryptopro.ru10*�d
103770008544410	URU10U77 Москва10UМосква1/0-U	&ул. Сущёвский вал д. 181%0#U
ООО "КРИПТО-ПРО"1k0iUbТестовый подчиненный УЦ ООО "КРИПТО-ПРО" ГОСТ 2012 (УЦ 2.0)0
211102162955Z
220202163955Z0��10*��0276140006961604U
-ИП Фазылов Азат Уралович10	URU1"0 U*Азат Уралович10UФазылов1604U-ИП Фазылов Азат Уралович0f0*�0*�$ *�C @gwL�Y~���PU�~�Ǻ����Ah;�PV�o� ˓8`�����`
�|ȏ*�$��x�����0��0U��0	+�70*�.  0U�*�ܴp��R�$%?
Rm�'0&U%0++*�"02	+�7
%0#0
+0
+0	*�"0��+��0��09+0�-http://testca2012.cryptopro.ru/ocsp2/ocsp.srf0[+0�Ohttp://testca2012.cryptopro.ru/aia/758d1bf732d2d0f25f1e0f9e1379ebfc20fe9e2f.crt0U 00*�dq0*�dq0+U$0"�20211102162954Z�20220202162954Z0�*�dp�0�4СКЗИ "КриптоПро CSP" (версия 4.0)1ПАК "КриптоПро УЦ" версии 2.0OСертификат соответствия № СФ/124-3971 от 15.01.2021OСертификат соответствия № СФ/128-3870 от 23.07.20200,*�do#!СКЗИ "КриптоПро CSP"0`UY0W0U�S�Q�Ohttp://testca2012.cryptopro.ru/cdp/758d1bf732d2d0f25f1e0f9e1379ebfc20fe9e2f.crl0*�dr0��U#��0���u��2���_�y�� ��/��X��T0�P10	URU10*�d
77171079911 0	*�H��
	info@cryptopro.ru10*�d
103770008544410U77 Москва10UМосква1/0-U	&ул. Сущёвский вал д. 181%0#U
ООО "КРИПТО-ПРО"1e0cUТестовый головной УЦ ООО "КРИПТО-ПРО" ГОСТ 2012 (УЦ 2.0)���� q��M{KF�B0
*�A Xղ�=�l�/,]nD��n��LUa�$�.����W���Bq؏`"j�:{�-����?|a�}��  1�40�00�m0�V10*�d
77171079911 0	*�H��
	info@cryptopro.ru10*�d
103770008544410	URU10U77 Москва10UМосква1/0-U	&ул. Сущёвский вал д. 181%0#U
ООО "КРИПТО-ПРО"1k0iUbТестовый подчиненный УЦ ООО "КРИПТО-ПРО" ГОСТ 2012 (УЦ 2.0)�ԭ6�J�5)'
�0*� ��	*�H��
	1	*�H��
0	*�H��
	1
211108192434Z0)	*�H��
	4100*� �
*�0/	*�H��
	1" ��dC[��; �1�'RUO?���&���i@�)�]0��*�H��
	/1��0��0��0��0
*� ��1 ���f� x��;J+����Q|T�w��P�0�u0�^��Z0�V10*�d
77171079911 0	*�H��
	info@cryptopro.ru10*�d
103770008544410	URU10U77 Москва10UМосква1/0-U	&ул. Сущёвский вал д. 181%0#U
ООО "КРИПТО-ПРО"1k0iUbТестовый подчиненный УЦ ООО "КРИПТО-ПРО" ГОСТ 2012 (УЦ 2.0)�ԭ6�J�5)'
�0
*�@��'CWas_6d�n[>M&�L"��A�t�77�!��:c>M��`�N�>��G;�$<0��Y�T2&o�      

Вверх

Пользователи, просматривающие эту тему

Guest

Форум КриптоПро
 » 
Средства криптографической защиты информации
 » 
КриптоПро JCP, JavaTLS
 » 
Ошибка «Error occurred during building the certification path for the target» при подписании

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

Недавно столкнулся с ситуацией, что перестал работать VCenter (в моём случае версия 6.5 – VCSA, но подобное может быть с любой версией не зависимо от платформы).

При попытке зайти как под доменной учёткой, так и под локальным админом – не проходила проверка подлинности – постоянно писало – сперва, что неправильные имя пользователя или пароль, а затем и вовсе, что требуется ввести имя пользователя и пароль, хотя они само собой были введены.

Неожиданно перестало пускать в VCenter - ошибка 503, введите имя пользователя и пароль, не стартуют службы vmware-vpxd и vmware-vpxd-svc  - неверный пароль

Неожиданно перестало пускать в VCenter - ошибка 503, введите имя пользователя и пароль, не стартуют службы vmware-vpxd и vmware-vpxd-svc  - введите пароль

После попытки перезагрузить сервер или все службы командами service-control —stop —all и service-control —start —all добрая половина служб не запускалась, при этом на главной странице vcenter – выскакивала ошибка 503

Неожиданно перестало пускать в VCenter - ошибка 503, введите имя пользователя и пароль, не стартуют службы vmware-vpxd и vmware-vpxd-svc  - ошибка 503 при попытки зайти в vcenter

При переходе по адресу vcenter/ui – появлялась ошибка

[400] An error occurred while sending an authentication request to the vCenter Single Sign-On server. An error occurred when processing the metadata during vCenter Single Sign-on setup – null.

Неожиданно перестало пускать в VCenter - ошибка 503, введите имя пользователя и пароль, не стартуют службы vmware-vpxd и vmware-vpxd-svc  - ошибка 400 при попытки зайти в ui

В моём случае проблема оказалась в протухшем STS сертификате. Далее я пишу для своего случая, именно для VCSA, если у вас vCenter на винде, то читайте KBшки, ссылки на которые указаны, там есть описания, что делать для виндовых случаев.

Чтобы посмотреть срок действия STS сертификатов нужно скачать скрипт из KB VMWare. На всякий случай скопировал его.

Скачать можно при помощи wget, ну или закинуть на сервере через WinSCP, ну или просто скопировать текст скрипта и вставить в файл на сервере.

Запускается он командой:

python checksts.py

После выполнения будут отображены действительные и просроченные STS сертификаты. Если найдется просроченный сертификат, то внизу будет подсказка на какую KB стоит посмотреть.

Неожиданно перестало пускать в VCenter - ошибка 503, введите имя пользователя и пароль, не стартуют службы vmware-vpxd и vmware-vpxd-svc  - писк просроченных STS сертификатов

В этой KB имеется скрипт, на всякий случай – копия, для обновления просроченных STS сертификатов, конечно как водится, перед запуском чего-бы то ни было – рекомендуется сделать бэкапы, снапшоты и т.д и т.п. Также обратите внимание, что если у вас в одном SSO домене находится несколько vCenter серверов – то запускать скрипт нужно только на одном.

В общем качаем скрипт, делаем его исполняемым и запускаем:

chmod +x fixsts.sh
./fixsts.sh

Если всё пройдет без ошибок – можно пробовать перезапустить все службы:

service-control --stop --all
service-control --start --all

Если окажется, что есть еще какие-нибудь протухшие сертификаты, то службы всё равно могут не стартануть. Найти все просроченные сертификаты поможет команда:

for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); 
do echo STORE $i; 
/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $i --text | 
egrep "Alias|Not After"; done

Соответственно нужно будет такие сертификаты обновить и снова попробовать перезапустить все службы. Либо, можно пойти простым и топорным путём, и перевыпустить вообще все сертификаты:

/usr/lib/vmware-vmca/bin/certificate-manager

Тут нужно будет выбрать 8й пункт, и далее следовать инструкциям на экране. Но используйте эту команду на свой страх и риск, если используются сторонние сервисы/плагины/кастомизированные шаблоны то это дело скорее всего нужно будет перенастраивать.

Неожиданно перестало пускать в VCenter - ошибка 503, введите имя пользователя и пароль, не стартуют службы vmware-vpxd и vmware-vpxd-svc  - certificate-manager

После описанных выше действий у меня vCenter починился, и работает нормально. Вообще какое-то странное решение у VMWare с этим ультраважным сертификатом. Возникает вопрос – почему нельзя было сделать, что б он автоматически перевыпускался, когда походит к концу срок его действия?

При попытке запустить Java-проект возникает следующая ошибка:

Error occurred during initialization of boot layer
java.lang.LayerInstantiationException: Package jdk.internal.jrtfs in both module java.base and module jrt.fs

Я попытался удалить JDK и JRE и снова установить их, но проблема все еще существует.

Может кто-нибудь объяснить, как решить эту проблему?

Может ли восстановление системы помочь?

У вас много установки jdk?


— Issam EL-GUERCH

20.09.2018 15:51

@Issam EL-GUERCH, Только один, 10.0.2


— user300045

20.09.2018 15:53

Вы можете разместить свой код?


— Matt

20.09.2018 16:04

Когда вы добавляете внешний файл .jar в новую пользовательскую библиотеку, обязательно отметьте «Путь к загрузочному классу системы».


— SidPro

01.03.2021 09:36

Работа с датами и временем в языке Java

Разбейте число Integer(int) на любое разрядное число так, чтобы сумма цифр была равна...

Редкие достижения на Github ✨

LeetCode запись решения 2536. Увеличение подматриц на единицу

Версия Java на основе версии загрузки

Версия Java на основе версии загрузки

Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.

Документирование API с помощью Swagger на Springboot


Ответы
5

Я столкнулся с той же проблемой, я думаю, что это как-то связано с более новой версией Java.

При создании нового java-проекта вот картина

Щелкните версию 1.8, а затем сохраните ее, и она должна работать.

Если ваша программа работает в командной строке, проблема не в установках JDK, а в среде IDE, которой является Eclipse. попробуйте переустановить Eclipse IDE.

Сегодня я столкнулся с той же проблемой, и я попробовал «Запуск от имени -> Java-приложение». Потом это было исправлено. (кстати, я использовал jdk-11.0.2)
Надеюсь, вы найдете это полезным!

Это может произойти, если у вас есть конфигурация запуска без настроенного проекта и основного класса. Вы можете исправить это, перейдя в настройки запуска и удалив пустую конфигурацию или выбрав правильную при запуске.

Я была такая же проблема. Похоже, что зависимости от Modulepath перепутались. — перекомпоновка проекта после удаления файла Launch Configuration проекта из папки.
…workspace.metadata.pluginsorg.eclipse.debug.core.launches и удаление каталога bin устранили проблему.

Другие вопросы по теме

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Error 404 лгбт
  • Error obtaining mac configuration for user zabbix
  • Error 404 заставка
  • Error nu1101 не удалось найти пакет
  • Error 404 дискорд сервер

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии