Статус: Активный участник
Группы: Участники
Зарегистрирован: 30.10.2019(UTC) Сообщений: 56  Откуда: Новосибирск Сказал(а) «Спасибо»: 14 раз
|
Автор: Санчир Момолдаев  Добрый день! cacerts - это хранилище типа Java Key Store (JKS) в JCP в панели или через keytool можно создать хранилище типа CertStore
Файлы типа CertStore используем для распространения клиентам наборов прикладных и корневых сертификатов. Автор: Санчир Момолдаев  в панели JCP вы JKS никак не откроете. только через keytool пути можете указывать сами.
JCP может создавать JKS через KeyStore: Код:KeyStore keyStore = KeyStore.getInstance("JKS");
keyStore.load(null, null);
keyStore.store(new FileOutputStream(fileName), password.toCharArray());
Я и подумал, что раз можем создать свой JKS, то может и сможем сокормить его JCP вместо стандартного cacerts. Автор: Санчир Момолдаев  в методы где принимают сеты цепочек их и передавайте (загруженные к примеру из CertStore)
Вот допустим команда подписания: Код:cadesSignature.addSigner(JCP.PROVIDER_NAME, keyState.getDigest(), keyState.getPublickeyOID(),
keyState.getPk(), keyState.getCerts(), CAdESType.CAdES_BES, null, false,
new AttributeTable(table), null, cryptoState.getCrlList());
getCerts() выдаёт List<X509Certificate> из двух элементов. В котором 0 элемент - это сертификат подписанта, а первый элемент - сертификат его издателя (это сертификат вашего тестового УЦ). В ответ на мою попытку подписания (без заполненного cacerts) cadesSignature выдаёт ошибку: Код:
Caused by: ru.CryptoPro.AdES.exception.AdESException: Root certificate: sn 3b208ae5fd46688649a050faafa88393, subject CN="Тестовый УЦ ООО \"КРИПТО-ПРО\"", O="ООО \"КРИПТО-ПРО\"", L=Москва, ST=г. Москва, C=RU, STREET=ул. Сущёвский вал д. 18, OID.1.2.643.3.131.1.1=#120C303031323334353637383930, OID.1.2.643.100.1=#120D31323334353637383930313233, 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 is untrusted
at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.validateIfRootCertificateInTrustStoreAndAddToChain(Unknown Source) ~[ades_core_a-40621.0.jar:40621-A]
at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.build(Unknown Source) ~[ades_core_a-40621.0.jar:40621-A]
at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.build(Unknown Source) ~[ades_core_a-40621.0.jar:40621-A]
... 58 common frames omitted
То есть не смотря на то, что ей на вход подали полную цепочку сертификатов, JCP не считает, что стоит доверять корневому. Либо я что-то не то делаю, либо схема с полными цепочками всё равно без заполненного cacerts не работает. Отредактировано пользователем 5 лет назад
| Причина: Не указана
|