Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline churkin_metasharks  
#1 Оставлено : 19 апреля 2024 г. 14:15:39(UTC)
churkin_metasharks

Статус: Участник

Группы: Участники
Зарегистрирован: 27.11.2023(UTC)
Сообщений: 18

Сказал(а) «Спасибо»: 6 раз
Добрый день, подскажите пожалуйста, в чем может быть проблема. При попытке создания CAdES-BES подписи используя метод addSigner с параметрами:
Цитата:
cadesSignature.addSigner(
JCSP.PROVIDER_NAME,
null,
null,
privateKey,
certs,
CAdESType.CAdES_BES,
null,
false,
null,
null
);


Приложение падает с ошибкой, если не включать опцию онлайн-проверки отозванных сертификатов:
System.setProperty("com.sun.security.enableCRLDP", "true");

Цитата:
19:42:25.199 [Thread-4] ERROR r.b.s.task.SigningWorkerTask - Validation failed for the target:
serial: 7c00144b008985472f2d37a456000700144b00
subject: CN="ООО \"БиАйЭй-Технолоджиз\"", SURNAME=Иванов, GIVENNAME=Иван Иванович, L=Санкт-Петербург, C=RU, O="ООО \"БиАйЭй-Технолоджиз\"", T=Менеджер, OID.1.2.643.100.1=#120d31313437383437333836393036, OID.1.2.643.100.3=#120b3634323736313031383835, OID.1.2.643.3.131.1.1=#120c343235303232363038383339, OID.1.2.643.100.4=#120a37383130333835373134
issuer: CN="Тестовый УЦ ООО \"КРИПТО-ПРО\"", O="ООО \"КРИПТО-ПРО\"", L=Москва, ST=г. Москва, C=RU, STREET=ул. Сущёвский вал д. 18, OID.1.2.643.3.131.1.1=#120c303031323334353637383930, OID.1.2.643.100.1=#120d31323334353637383930313233
not before: Thu Apr 18 15:10:26 MSK 2024
not after: Tue Jun 18 15:20:26 MSK 2024
signature provider: JCSP
validation date: null
revocation algorithm: CPPKIX
revocation validator: RevCheck
online (crl list is empty): true
For online validation (by CRL DP) 'com.sun.security.enableCRLDP' (for Oracle), or 'com.ibm.security.enableCRLDP' (for IBM) must be set to 'true', or 'ocsp.enable' must be set to 'true' (OCSP) with other options (responder etc.), or CRL list must be set for offline validation
ru.CryptoPro.CAdES.exception.CAdESException: Validation failed for the target:
serial: 7c00144b008985472f2d37a456000700144b00
subject: CN="ООО \"БиАйЭй-Технолоджиз\"", SURNAME=Иванов, GIVENNAME=Иван Иванович, L=Санкт-Петербург, C=RU, O="ООО \"БиАйЭй-Технолоджиз\"", T=Менеджер, OID.1.2.643.100.1=#120d31313437383437333836393036, OID.1.2.643.100.3=#120b3634323736313031383835, OID.1.2.643.3.131.1.1=#120c343235303232363038383339, OID.1.2.643.100.4=#120a37383130333835373134
issuer: CN="Тестовый УЦ ООО \"КРИПТО-ПРО\"", O="ООО \"КРИПТО-ПРО\"", L=Москва, ST=г. Москва, C=RU, STREET=ул. Сущёвский вал д. 18, OID.1.2.643.3.131.1.1=#120c303031323334353637383930, OID.1.2.643.100.1=#120d31323334353637383930313233
not before: Thu Apr 18 15:10:26 MSK 2024
not after: Tue Jun 18 15:20:26 MSK 2024
signature provider: JCSP
validation date: null
revocation algorithm: CPPKIX
revocation validator: RevCheck
online (crl list is empty): true
For online validation (by CRL DP) 'com.sun.security.enableCRLDP' (for Oracle), or 'com.ibm.security.enableCRLDP' (for IBM) must be set to 'true', or 'ocsp.enable' must be set to 'true' (OCSP) with other options (responder etc.), or CRL list must be set for offline validation
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.bia.signclient.service.SignService.createCadesSignature(SignService.java:286)
at ru.bia.signclient.service.SignService.signDocument(SignService.java:211)
at ru.bia.signclient.task.SigningWorkerTask.launchSignatureProcedure(SigningWorkerTask.java:120)
at ru.bia.signclient.task.SigningWorkerTask.run(SigningWorkerTask.java:59)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:842)
Caused by: ru.CryptoPro.AdES.exception.AdESException: Validation failed for the target:
serial: 7c00144b008985472f2d37a456000700144b00
subject: CN="ООО \"БиАйЭй-Технолоджиз\"", SURNAME=Иванов, GIVENNAME=Иван Иванович, L=Санкт-Петербург, C=RU, O="ООО \"БиАйЭй-Технолоджиз\"", T=Менеджер, OID.1.2.643.100.1=#120d31313437383437333836393036, OID.1.2.643.100.3=#120b3634323736313031383835, OID.1.2.643.3.131.1.1=#120c343235303232363038383339, OID.1.2.643.100.4=#120a37383130333835373134
issuer: CN="Тестовый УЦ ООО \"КРИПТО-ПРО\"", O="ООО \"КРИПТО-ПРО\"", L=Москва, ST=г. Москва, C=RU, STREET=ул. Сущёвский вал д. 18, OID.1.2.643.3.131.1.1=#120c303031323334353637383930, OID.1.2.643.100.1=#120d31323334353637383930313233
not before: Thu Apr 18 15:10:26 MSK 2024
not after: Tue Jun 18 15:20:26 MSK 2024
signature provider: JCSP
validation date: null
revocation algorithm: CPPKIX
revocation validator: RevCheck
online (crl list is empty): true
For online validation (by CRL DP) 'com.sun.security.enableCRLDP' (for Oracle), or 'com.ibm.security.enableCRLDP' (for IBM) must be set to 'true', or 'ocsp.enable' must be set to 'true' (OCSP) with other options (responder etc.), or CRL list must be set for offline validation
at ru.CryptoPro.AdES.certificate.BaseCertificateChainValidatorImpl.validate(Unknown Source)
at ru.CryptoPro.AdES.certificate.BaseCertificateChainValidatorImpl.validate(Unknown Source)
at ru.CryptoPro.AdES.certificate.BaseCertificateChainValidatorImpl.validate(Unknown Source)
... 13 common frames omitted
Caused by: java.security.cert.CertPathValidatorException: Could not determine revocation status
at java.base/sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(PKIXMasterCertPathValidator.java:135)
at java.base/sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:224)
at java.base/sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:144)
at java.base/sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(PKIXCertPathValidator.java:83)
at java.base/java.security.cert.CertPathValidator.validate(CertPathValidator.java:309)
at ru.CryptoPro.reprov.CPCertPathValidator.engineValidate(Unknown Source)
at java.base/java.security.cert.CertPathValidator.validate(CertPathValidator.java:309)
... 16 common frames omitted
Caused by: java.security.cert.CertPathValidatorException: Could not determine revocation status
at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.check(Unknown Source)
at java.base/sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(PKIXMasterCertPathValidator.java:125)
... 22 common frames omitted


Корневой сертификат Крипто Про лежит в cacerts. Насколько я понимаю, отключить проверку отзыва сертификатов при формировании подписи - нельзя. И всего есть два варианта решения данной проблемы - либо включать онлайн-проверку, либо не включать онлайн-проверку и скачивать crl файл, вручную его добавляя в подпись в одном из перегруженных методов addSigner?
Offline churkin_metasharks  
#2 Оставлено : 19 апреля 2024 г. 14:16:33(UTC)
churkin_metasharks

Статус: Участник

Группы: Участники
Зарегистрирован: 27.11.2023(UTC)
Сообщений: 18

Сказал(а) «Спасибо»: 6 раз
И сразу второй вопрос, а можно ли(и вообще нужно ли) каким-то образом извлекать корневой сертификат и добавлять его в подпись для построения цепочки сертификатов. И каким образом его можно программно извлечь из cacerts, так как если мы получаем сертификат для подписи из keystore и пытаемся получить его цепочку - в цепочке содержится только этот сертификат.
Offline Евгений Афанасьев  
#3 Оставлено : 19 апреля 2024 г. 16:56:10(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Здравствуйте.
Автор: churkin_metasharks Перейти к цитате
с ошибкой, если не включать опцию онлайн-проверки отозванных сертификатов

Все верно. По умолчанию проверка статуса сертификата выполняется с помощью CRL из сети, доступ в сеть включается с помощью com.sun.security.enableCRLDP. Если без enableCRLDP, то нужно передать готовые CRL в addSigner.

Автор: churkin_metasharks Перейти к цитате
есть два варианта решения данной проблемы - либо включать онлайн-проверку, либо не включать онлайн-проверку и скачивать crl файл, вручную его добавляя в подпись в одном из перегруженных методов addSigner

Да.

Автор: churkin_metasharks Перейти к цитате
отключить проверку отзыва сертификатов при формировании подписи - нельзя

Можно отключить проверку статуса при создании CAdES-BES или CAdES-T.
Код:

CAdESSignature cAdESSignature = new CAdESSignature(false);
cAdESSignature.setOptions((new Options()).disableCertificateValidation());
cAdESSignature.addSigner(...)
...
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
churkin_metasharks оставлено 19.04.2024(UTC)
Offline churkin_metasharks  
#4 Оставлено : 19 апреля 2024 г. 17:06:47(UTC)
churkin_metasharks

Статус: Участник

Группы: Участники
Зарегистрирован: 27.11.2023(UTC)
Сообщений: 18

Сказал(а) «Спасибо»: 6 раз
Автор: Евгений Афанасьев Перейти к цитате
Здравствуйте.
Автор: churkin_metasharks Перейти к цитате
с ошибкой, если не включать опцию онлайн-проверки отозванных сертификатов

Все верно. По умолчанию проверка статуса сертификата выполняется с помощью CRL из сети, доступ в сеть включается с помощью com.sun.security.enableCRLDP. Если без enableCRLDP, то нужно передать готовые CRL в addSigner.

Автор: churkin_metasharks Перейти к цитате
есть два варианта решения данной проблемы - либо включать онлайн-проверку, либо не включать онлайн-проверку и скачивать crl файл, вручную его добавляя в подпись в одном из перегруженных методов addSigner

Да.

Автор: churkin_metasharks Перейти к цитате
отключить проверку отзыва сертификатов при формировании подписи - нельзя

Можно отключить проверку статуса при создании CAdES-BES или CAdES-T.
Код:

CAdESSignature cAdESSignature = new CAdESSignature(false);
cAdESSignature.setOptions((new Options()).disableCertificateValidation());
cAdESSignature.addSigner(...)
...


Спасибо большое - это действительно помогло. Подскажите, а в случае добавления опции disableCertificateValidation нам потом можно будет проверить подпись?
Offline churkin_metasharks  
#5 Оставлено : 19 апреля 2024 г. 17:08:02(UTC)
churkin_metasharks

Статус: Участник

Группы: Участники
Зарегистрирован: 27.11.2023(UTC)
Сообщений: 18

Сказал(а) «Спасибо»: 6 раз
А также, если вам не трудно, не могли бы вы описать метод верификации подписи, нужно ли при этом в неё включать цепочку сертификатов?
Offline Евгений Афанасьев  
#6 Оставлено : 19 апреля 2024 г. 17:42:15(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
disableCertificateValidation работает только при создании CAdES-BES или CAdES-T или усовершенствовании BES -> T. При проверке disableCertificateValidation не работает - проверка статуса тут обязательна.

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

По умолчанию CAdES-BES и CAdES-T создаются без добавления в подпись сертификата для ее проверки. Добавить можно двумя способами при создании:
* используя CAdESSignature#setCertificateStore(store), где store - CollectionStore из X509CertificateHolder, или
* используя расширенную версию addSigner, которая последним параметром принимает флаг addCertificateChain. Этот параметр приведет к добавлению в подпись всей цепочки.
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
churkin_metasharks оставлено 19.04.2024(UTC)
Offline churkin_metasharks  
#7 Оставлено : 19 апреля 2024 г. 17:52:46(UTC)
churkin_metasharks

Статус: Участник

Группы: Участники
Зарегистрирован: 27.11.2023(UTC)
Сообщений: 18

Сказал(а) «Спасибо»: 6 раз
Автор: Евгений Афанасьев Перейти к цитате
disableCertificateValidation работает только при создании CAdES-BES или CAdES-T или усовершенствовании BES -> T. При проверке disableCertificateValidation не работает - проверка статуса тут обязательна.

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

По умолчанию CAdES-BES и CAdES-T создаются без добавления в подпись сертификата для ее проверки. Добавить можно двумя способами при создании:
* используя CAdESSignature#setCertificateStore(store), где store - CollectionStore из X509CertificateHolder, или
* используя расширенную версию addSigner, которая последним параметром принимает флаг addCertificateChain. Этот параметр приведет к добавлению в подпись всей цепочки.


Спасибо за подробное объяснение, хочется уточнить момент по поводу корневого сертификата. Его необходимо только устанавливать в cacerts? Не нужно его вручную добавлять в созданную цепочку сертификатов наряду с промежуточными? И если его нужно добавлять, может быть подскажите, как средствами JCSP получить конкретный корневой сертификат из cacerts?
Offline Евгений Афанасьев  
#8 Оставлено : 19 апреля 2024 г. 19:22:41(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Автор: churkin_metasharks Перейти к цитате
Его необходимо только устанавливать в cacerts?

Да, в случае использования JCP.
В случае JCSP можно устанавливать в системное хранилище Root.
Также есть возможность перечитать cacerts/ROOT, если туда был установлен корневой в процессе работы: CAdESSignature.reloadCACerts()

Автор: churkin_metasharks Перейти к цитате
Не нужно его вручную добавлять в созданную цепочку сертификатов наряду с промежуточными?

Корневой не обязательно добавлять в цепочку, он и так будет прочитан из хранилища доверенных корневых сертификатов (см. выше - cacerts или ROOT). Если корневой есть в цепочке, но его нет в хранилище доверенных корневых сертификатов, будет ошибка.




thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
churkin_metasharks оставлено 23.04.2024(UTC)
Offline churkin_metasharks  
#9 Оставлено : 23 апреля 2024 г. 13:51:16(UTC)
churkin_metasharks

Статус: Участник

Группы: Участники
Зарегистрирован: 27.11.2023(UTC)
Сообщений: 18

Сказал(а) «Спасибо»: 6 раз
Автор: Евгений Афанасьев Перейти к цитате
Автор: churkin_metasharks Перейти к цитате
Его необходимо только устанавливать в cacerts?

Да, в случае использования JCP.
В случае JCSP можно устанавливать в системное хранилище Root.
Также есть возможность перечитать cacerts/ROOT, если туда был установлен корневой в процессе работы: CAdESSignature.reloadCACerts()

Автор: churkin_metasharks Перейти к цитате
Не нужно его вручную добавлять в созданную цепочку сертификатов наряду с промежуточными?

Корневой не обязательно добавлять в цепочку, он и так будет прочитан из хранилища доверенных корневых сертификатов (см. выше - cacerts или ROOT). Если корневой есть в цепочке, но его нет в хранилище доверенных корневых сертификатов, будет ошибка.


Большое спасибо за развернутый ответ
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.