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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline CryptoPro_FanBoy  
#1 Оставлено : 2 октября 2019 г. 19:18:51(UTC)
CryptoPro_FanBoy

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

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

Сказал(а) «Спасибо»: 3 раз
Здравствуйте.
Позавчера отладил подпись документа отсоединенной подписью формата Cades XLT1. Сегодня возникла необходимость переустановки jdk. Сохранить конфигурацию JDK я не додумался, понадеявшись, что при установке JCP+JCSP никаких трудностей не возникнет. В результате переустановки, естественно, всё перестало работать. Самостоятельно искать причину поломки уже не осталось никаких сил, поэтому прошу помощи. JCP и JCSP были установлены по инструкции. Все необходимые зависимости импортированы. Приведенный ниже код позавчера давал на выходе отсоединенную подпись нужного формата. Проблема в том, что сейчас не получается получить приватный ключ из хранилища (хранилище тоже не изменялось). Причина проблемы где-то в конфигурации jdk. Заранее спасибо!
Код:
System.setProperty("com.sun.security.enableCRLDP", "true");
        System.setProperty("ru.CryptoPro.reprov.enableCRLDP", "true");
        System.setProperty("com.ibm.security.enableCRLDP", "true"); 
        String tsaUrl = "http://testca2012.cryptopro.ru/tsp/tsp.srf";  

        try {

            IXAdESConfig config = XAdESConfig.CONFIG_2012_S_WITH_PASS;
            final KeyStore keyStore = KeyStore.getInstance(config.getKeyStoreType(), config.getDefaultProvider());
            char[] pass = "123456".toCharArray();
            keyStore.load(new FileInputStream("C:\\my.keystore"), pass); 
            PrivateKey privateKey = (PrivateKey) keyStore.getKey("oms", "whatever".toCharArray()); 
            Certificate[] chain = /*new Certificate[8];*/ {
                    keyStore.getCertificate("oms"), 
                    keyStore.getCertificate("ocspcert"), 
                    keyStore.getCertificate("ocsp_root")
                    };
            Enumeration<String> en = keyStore.aliases();
            while (en.hasMoreElements()){
                System.out.println(en.nextElement());
            } 



            X509Certificate[] xChain = new X509Certificate[chain.length];
            System.arraycopy(chain, 0, xChain, 0, chain.length);
            Collection<X509CertificateHolder> certHolders = new ArrayList<X509CertificateHolder>(chain.length);
            for (Certificate cert : chain) {
                certHolders.add(new X509CertificateHolder(cert.getEncoded()));
            }
            
            CollectionStore store = new CollectionStore(certHolders);
            ByteArrayOutputStream signature = new ByteArrayOutputStream();
            CAdESSignature cAdESSignature = new CAdESSignature(true);
            cAdESSignature.addSigner(config.getDefaultProvider(),
                    /*JCP.GOST_DIGEST_2012_256_OID*/ config.getDigestMethod(),
                    /*JCP.GOST_PARAMS_EXC_2012_256_KEY_OID*/  config.getSignatureMethod(),
                    privateKey,
                    Arrays.asList(chain),
                    CAdESType.CAdES_X_Long_Type_1,
                    tsaUrl, /*null,*/
                    false);


            byte[] data;
            File file = new File("C:\\Work\\HDImageStore\\PDF\\a\\pdf.pdf");
            data = Files.readAllBytes(Paths.get(file.getAbsolutePath()));
            cAdESSignature.open(signature);
            cAdESSignature.update(data);
            cAdESSignature.setCertificateStore(store);
            cAdESSignature.close();

            byte[] cadesCMS = signature.toByteArray();
            OutputStream os = new FileOutputStream("pdf.bin");
            os.write(cadesCMS);
            os.close();


            FileInputStream cades = new FileInputStream("pdf.bin");
            CAdESSignature checksignature = new CAdESSignature(cades, new FileInputStream(file) *//*null*//*, CAdESType.CAdES_X_Long_Type_1);
            checksignature.verify(Arrays.asList(chain));
        } catch (IOException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (CertificateException e) {
            e.printStackTrace();
        } catch (UnrecoverableKeyException e) {
            e.printStackTrace();
        } catch (KeyStoreException e) {
            e.printStackTrace();
        } catch (NoSuchProviderException e) {
            e.printStackTrace();
        } catch (CAdESException e) {
            e.printStackTrace();
        }


Snimok.PNG (28kb) загружен 12 раз(а). log.txt (43kb) загружен 6 раз(а).


Offline Санчир Момолдаев  
#2 Оставлено : 3 октября 2019 г. 18:50:55(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 101 раз
Поблагодарили: 285 раз в 265 постах
в config.getKeyStoreType() что у вас?
приложите скриншот вкладки "Оборудование"
где находится ваш закрытый ключ?
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
CryptoPro_FanBoy оставлено 04.10.2019(UTC)
Offline Евгений Афанасьев  
#3 Оставлено : 3 октября 2019 г. 19:42:29(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Так вы пытаетесь ключ прочитать из файла хранилища сертификатов, а надо из контейнера, load(null, null) при условии, что keyStore с типом HDIMAGE и т.п.

Отредактировано пользователем 3 октября 2019 г. 20:57:58(UTC)  | Причина: Не указана

thanks 2 пользователей поблагодарили Евгений Афанасьев за этот пост.
Андрей * оставлено 04.10.2019(UTC), CryptoPro_FanBoy оставлено 04.10.2019(UTC)
Offline CryptoPro_FanBoy  
#4 Оставлено : 4 октября 2019 г. 14:53:07(UTC)
CryptoPro_FanBoy

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

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

Сказал(а) «Спасибо»: 3 раз
Извиняюсь за беспокойство. Удалось решить проблему самостоятельно.
Для решения нужно было указать во вкладке оборудования путь к файлам ключа. После чего возникала ошибка установки пути сертификации для tsp, что устранилось добавлением сертификатов соотв. служб в cacerts
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.