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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline drkswg  
#1 Оставлено : 8 апреля 2021 г. 17:35:51(UTC)
drkswg

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

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

Добрый день, пытаюсь сделать программу для формирования отделенной подписи Cades-BES для передачи документов в систему ГАС "Правосудие".

Проблема в том, что подпись проходит проверку через КриптоАРМ, проходит проверку на вашем портале онлайн проверки подписей, но на ГАС почему-то валится.
При этом подпись, которую я формирую через тот же КриптоАРМ проверку проходит. Возможно вы меня на верный путь сможете направить.

Код:
private static IConfiguration createConfig(ISignatureContainer container, boolean useStream) throws Exception {
        IConfiguration config = new SimpleConfiguration(container, true, useStream);

        config.setSignedAttributes(Configuration.getSomeSignedAttributes(true, false));
        config.setUnsignedAttributes(Configuration.getSomeUnsignedAttributes(false));
        config.setCRLStore(new CollectionStore(config.getCRLsHolder()));
        config.setCertificateStore(new CollectionStore(config.getChainHolder()));

        return config;
    }

    private static void executeSign(IConfiguration configuration) throws Exception {
        System.setProperty("ru.CryptoPro.reprov.enableCRLDP", "true");
        System.setProperty("com.sun.security.enableCRLDP", "true");
        System.setProperty("com.ibm.security.enableCRLDP", "true");

        String directory = "C:\\Users\\username\\Desktop\\testDir";

        List<File> fileList = new ArrayList<>(Arrays.asList(new File(directory).listFiles()));

        for (File file : fileList) {
            
            CAdESSignature cadesSignature = new CAdESSignature(configuration.detached());

            cadesSignature.setCertificateStore(configuration.getCertificateStore());

            cadesSignature.setCRLStore(configuration.getCRLStore());

            cadesSignature.addSigner(configuration.getProviderName(),
                    configuration.getDigestOid(),
                    configuration.getPublicKeyOid(),
                    configuration.getPrivateKey(),
                    configuration.getChain(),
                    CAdESType.CAdES_BES,
                    null,
                    false,
                    configuration.getSignedAttributes(),
                    configuration.getUnsignedAttributes(),
                    configuration.getCRLs());

            final byte[] data = Array.readFile(file);

            ByteArrayOutputStream signatureStream = new ByteArrayOutputStream();

            cadesSignature.open(signatureStream);

            cadesSignature.update(data);

            cadesSignature.close();
            signatureStream.close();

            byte[] cadesCms = signatureStream.toByteArray();

            cadesCms = Base64.getEncoder().encode(cadesCms);

            String cades = new String(cadesCms, StandardCharsets.UTF_8);

            StringBuilder strBuilder = new StringBuilder(cades);

            strBuilder.insert(0, "-----BEGIN CMS-----\r\n");
            strBuilder.append("\r\n-----END CMS-----\r\n");

            try (BufferedWriter writer = new BufferedWriter(new FileWriter(file + ".sig"))) {
                writer.write(strBuilder.toString());
            }
        }
Offline Санчир Момолдаев  
#2 Оставлено : 8 апреля 2021 г. 17:51:09(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 59 раз
Поблагодарили: 124 раз в 122 постах
Добрый день!
может нужно вложить в подпись сертификат?

пример посмотрите здесь
Техническую поддержку оказываем тут
Наша база знаний
Offline Евгений Афанасьев  
#3 Оставлено : 8 апреля 2021 г. 19:30:19(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 16 раз
Поблагодарили: 555 раз в 529 постах
Еще можно так: https://www.cryptopro.ru...&m=119398#post119398
С помощью параметра addCertificateChain = true в ф. addSigner().
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.