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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline ananas315  
#1 Оставлено : 4 сентября 2023 г. 17:14:14(UTC)
ananas315

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

Группы: Участники
Зарегистрирован: 01.09.2023(UTC)
Сообщений: 7
Российская Федерация

Добрый день!
Требуется подписывать файлы через JCSP аналогично, как подписывается через плагин браузера(Крипто-про Extension for CAdES).
Столкнулся с проблемой получения цепочки сертификатов.

Окружение:
CryptoPro CSP 5.0.12500
Java CSP 5.0.44122-A
Java 11.0.20.1
ОС Windows 10

Шаги:
1. Получил тестовый сертификат тут: http://testgost2012.cryp....ru/certsrv/certrqma.asp
2. Установил в REGISTRY
3. Получил корневой сертификат(либо с http://testgost2012.cryp....ru/certsrv/certcarc.asp либо прямо из пользовательского сертификата)
4. Установил корневой сертификат через keytool
Код:
keytool -import -trustcacerts -cacerts -storepass changeit -noprompt -alias test_root -file certnew.cer

5. Получаю цепочку сертификатов:
Код:
import ru.CryptoPro.Crypto.CryptoProvider;
import ru.CryptoPro.JCSP.JCSP;
import ru.CryptoPro.reprov.RevCheck;

import java.security.KeyStore;
import java.security.Security;
import java.security.cert.Certificate;

public class CertChain {
    public static void main(String[] args) {
        Security.addProvider(new JCSP());
        Security.addProvider(new CryptoProvider());
        Security.addProvider(new RevCheck());

        try {
            KeyStore keyStore = KeyStore.getInstance(JCSP.REG_STORE_NAME, JCSP.PROVIDER_NAME);
            keyStore.load(null, null);

            Certificate[] chain = keyStore.getCertificateChain("f0551342e-ef2b-b116-eef9-4595c159154");
            System.out.println("Loaded certificate chain size: " + chain.length);
        } catch (Exception ex) {
            throw new RuntimeException(ex);
        }
    }
}


Результат: Loaded certificate chain size: 1

А должно быть, как я понимаю, 2. Т.е. корневой не грузится.
При выполнении keytool -list, добавленный корневой сертификат мне возвращается.
Что делаю не так?

Используемые сертификаты: cert.zip (3kb) загружен 0 раз(а).

Отредактировано пользователем 4 сентября 2023 г. 17:40:42(UTC)  | Причина: добавил тестовые сертификаты

Offline Евгений Афанасьев  
#2 Оставлено : 6 сентября 2023 г. 10:25:17(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Здравствуйте.
getCertificateChain только читает сертификаты из ключевого контейнера. Вероятно, в него установлен один сертификат ("Установил в REGISTRY"). Надо либо установить всю цепочку (p7b) в ключевой контейнер, либо иначе читать промежуточный сертификат (из файла) и добавлять в chain.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.