logo
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Margarita  
#1 Оставлено : 11 июля 2018 г. 7:15:26(UTC)
Margarita

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

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

Поблагодарили: 1 раз в 1 постах
Здравствуйте.
Использую КриптоПро Java csp-5.0.39267.
Программно была создана ключевая пара, запрос на сертификат и самоподписанный сертификат. Ключи и сертификат были успешно сохранены в хранилище.
На основе запроса был выпущен реальный сертификат (приходит кодированный в base64).
При попытке сохранить его получаю ошибку:
java.security.KeyStoreException: java.security.KeyException: Certificate is not correct: ru.CryptoPro.JCSP.MSCAPI.MSKeyParamException: KeyParam ERROR: 0x80090020
Сертификат точно соответствует ключам.

// String certBase64 - полученный сертификат
// String keyStoreName - имя хранилища
String certificateString = new String(Base64.getDecoder().decode(certBase64));
InputStream certificateStream = new ByteArrayInputStream(certificateString.getBytes(StandardCharsets.UTF_8));

KeyStore ks = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME);
ks.load(null, null);
CertificateFactory cf = CertificateFactory.getInstance("X509");
Certificate cert = cf.generateCertificate(certificateStream); // cert создается и выводится
ks.setCertificateEntry(keyStoreName, cert); // на этой строке падает
ks.store(null, null);

Подскажите, пожалуйста, из-за чего может возникать ошибка?
Offline Евгений Афанасьев  
#2 Оставлено : 11 июля 2018 г. 9:57:30(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 12 раз
Поблагодарили: 292 раз в 289 постах
Здравствуйте.
Складывается впечатление, что проблема в сертификате (0x80090020 - Внутренняя ошибка.). Не могли бы вы его приложить? Порядок действий такой:
1. создаете KeyPair;
2. Создаете GostCertificateRequest;
3. Получаете запрос, сохраняете его;
4. Создаете самоподписанный сертификат с помощью getSelfCert в GostCertificateRequest;
5. Сохраняете в keyStore с ключом с помощью setEntry;
6. Выпускаете в УЦ сертификат по запросу;
7. Пробуете установить его в keyStore - получаете ошибку.
Техническую поддержку оказываем тут
Наша база знаний
Offline Margarita  
#3 Оставлено : 11 июля 2018 г. 10:44:34(UTC)
Margarita

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

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

Поблагодарили: 1 раз в 1 постах
Прикладываю сертификат, который не получилось загрузить test_Cert.txt (2kb) загружен 8 раз(а).
Проделала все шаги, только в качестве УЦ использовала ваш тестовый - и все успешно без ошибок сохранилось.
Offline Margarita  
#4 Оставлено : 11 июля 2018 г. 12:31:22(UTC)
Margarita

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

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

Поблагодарили: 1 раз в 1 постах
Однако при повторной попытке сохранения сертификата получаю ту же ошибку. Хотя в документации сказано, что он должен перезаписаться.
Offline Евгений Афанасьев  
#5 Оставлено : 11 июля 2018 г. 14:17:36(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 12 раз
Поблагодарили: 292 раз в 289 постах
спасибо, проверим. я правильно понял, что у вас ошибка повторяется для любого сертификата? какая версия csp в формате x.x.xxxxx используется?
Техническую поддержку оказываем тут
Наша база знаний
Offline Margarita  
#6 Оставлено : 11 июля 2018 г. 14:33:42(UTC)
Margarita

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

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

Поблагодарили: 1 раз в 1 постах
Стоит CSP 4.0.9842 для linux.
Не совсем для каждого. Сертификат, который мне выпустил сторонний УЦ, не записался вообще,
а сертификат, сделанный в вашем тестовом УЦ, записался, но при второй попытке перезаписи получилась ошибка.

Проверила еще раз. На новом сертификате из вашего УЦ, перезапись сработала.

Отредактировано пользователем 11 июля 2018 г. 15:01:20(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#7 Оставлено : 16 июля 2018 г. 10:33:14(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 12 раз
Поблагодарили: 292 раз в 289 постах
Здравствуйте.
В следующих условиях воспроизвести не удалось:
Ubuntu 13.10 x86
Код:

CSP (Type:80) v4.0.9018 KC1 Release Ver:4.0.9953 OS:Linux CPU:IA32 FastCode:READY:AVX.

java-csp-5.0.39267
Пример:
Код:

    public static void main(String[] args) throws Exception {

        String alias = "test";
        String dn = "CN=Margarita";
        String alg = JCP.GOST_EL_SIGN_NAME;

        KeyStore keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME);
        keyStore.load(null, null);

        KeyPairGenerator kpg = KeyPairGenerator.getInstance(JCP.GOST_EL_DEGREE_NAME, JCSP.PROVIDER_NAME);
        KeyPair kp = kpg.generateKeyPair();

        // самоподписанный

        GostCertificateRequest request = new GostCertificateRequest(JCSP.PROVIDER_NAME);
        byte[] selfCertEncoded = request.getEncodedSelfCert(kp, dn, alg);

        CertificateFactory factory = CertificateFactory.getInstance("X.509");
        X509Certificate selfCert = (X509Certificate) factory.generateCertificate(new ByteArrayInputStream(selfCertEncoded));

        JCPProtectionParameter parameter = new JCPProtectionParameter("123".toCharArray());
        JCPPrivateKeyEntry entry = new JCPPrivateKeyEntry(kp.getPrivate(), new Certificate[] {selfCert});

        // сохраняем заглушку и ключ

        keyStore.setEntry(alias, entry, parameter);
        System.out.println("OK-1");

        // выпускаем сертификат в УЦ

        request = new GostCertificateRequest(JCSP.PROVIDER_NAME);

        int keyUsage =
            GostCertificateRequest.DIGITAL_SIGNATURE |
            GostCertificateRequest.NON_REPUDIATION;

        request.setKeyUsage(keyUsage);
        request.addExtKeyUsage(GostCertificateRequest.INTS_PKIX_EMAIL_PROTECTION);

        request.setPublicKeyInfo(kp.getPublic());
        request.setSubjectInfo(dn);

        request.encodeAndSign(kp.getPrivate(), alg);
        byte[] certEncoded = request.getEncodedCert("http://www.cryptopro.ru/certsrv/");

        // устанавливаем 2 раза!

        X509Certificate cert = (X509Certificate) factory
            .generateCertificate(new ByteArrayInputStream(certEncoded));

        keyStore.setCertificateEntry(alias, cert);
        System.out.println("OK-2");

        keyStore.setCertificateEntry(alias, cert); // еще раз
        System.out.println("OK-3");

    }
Техническую поддержку оказываем тут
Наша база знаний
Offline karpenko_vasily  
#8 Оставлено : 27 июля 2018 г. 7:36:09(UTC)
karpenko_vasily

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: Margarita Перейти к цитате
Стоит CSP 4.0.9842 для linux.
Не совсем для каждого. Сертификат, который мне выпустил сторонний УЦ, не записался вообще,
а сертификат, сделанный в вашем тестовом УЦ, записался, но при второй попытке перезаписи получилась ошибка.

Проверила еще раз. На новом сертификате из вашего УЦ, перезапись сработала.


Маргарита, Вам удалось сохранить сертификат указанным способом
ks.setCertificateEntry(keyStoreName, cert)?
Offline Margarita  
#9 Оставлено : 27 июля 2018 г. 7:52:29(UTC)
Margarita

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

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

Поблагодарили: 1 раз в 1 постах
Я пыталась сохранить той же самой функцией, которую вы предложили. Но видимо проблема была в одном конкретном сертификате, потому что при следующих попытках все отрабатывало. По бизнес требованиям я поняла, что мне не обязательно его сохранять в контейнер, поэтому больше проблемой не занималась.
thanks 1 пользователь поблагодарил Margarita за этот пост.
karpenko_vasily оставлено 27.07.2018(UTC)
Offline karpenko_vasily  
#10 Оставлено : 27 июля 2018 г. 7:59:40(UTC)
karpenko_vasily

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: Margarita Перейти к цитате
Я пыталась сохранить той же самой функцией, которую вы предложили. Но видимо проблема была в одном конкретном сертификате, потому что при следующих попытках все отрабатывало. По бизнес требованиям я поняла, что мне не обязательно его сохранять в контейнер, поэтому больше проблемой не занималась.


А какой сертификат удалось сохранить, Вам его перевыпустили или отработало с каким-то тестовым сертификатом?
Offline Margarita  
#11 Оставлено : 27 июля 2018 г. 8:07:32(UTC)
Margarita

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

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

Поблагодарили: 1 раз в 1 постах
Сохранился тестовый, на вашем тестовом УЦ выпущенный.
Чуть позже я буду еще раз запрашивать у стороннего УЦ сертификат и буду пытаться его сохранить.
Offline Евгений Афанасьев  
#12 Оставлено : 27 июля 2018 г. 8:21:12(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 12 раз
Поблагодарили: 292 раз в 289 постах
Здравствуйте.
Автор: Margarita Перейти к цитате
Но видимо проблема была в одном конкретном сертификате, потому что при следующих попытках все отрабатывало.

Если есть возможность воспроизвести, проверьте, пожалуйста, и приложите контейнер (если он тестовый) для воспроизведения ошибки. Спасибо.

Техническую поддержку оказываем тут
Наша база знаний
Offline karpenko_vasily  
#13 Оставлено : 27 июля 2018 г. 8:36:47(UTC)
karpenko_vasily

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: afev Перейти к цитате
спасибо, проверим. я правильно понял, что у вас ошибка повторяется для любого сертификата? какая версия csp в формате x.x.xxxxx используется?


А вы не пробовали сохранить сертификат указанным способом ks.setCertificateEntry(keyStoreName, cert), который приложила Маргарита?
Также получаю ошибку:
java.security.KeyStoreException: java.security.KeyException: Certificate is not correct: ru.CryptoPro.JCSP.MSCAPI.MSException: MSCAPI ERROR: 0x80090005

Пытаюсь сохранить сертификат:
MIIDdTCCAySgAwIBAgITEgArO90t6BW9b6hqDwAAACs73TAIBgYqhQMCAgMwfzEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkNSWVBUTy1QUk8gTExDMSEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDIwHhcNMTgwNzI3MDgxNTQ5WhcNMTgxMDI3MDgyNTQ5WjCBijEOMAwGA1UECwwFS0FTU0ExJDAiBgNVBAoMG9Ce0J7QniAi0J

Контейнер: алиас/пароль "jscp01"
jscp01.000.zip (2kb) загружен 2 раз(а).
Offline Евгений Афанасьев  
#14 Оставлено : 27 июля 2018 г. 9:22:39(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 12 раз
Поблагодарили: 292 раз в 289 постах
Спасибо, попробую. С сертификатом, выпущенным в тестовом УЦ, не воспроизводилось, проверю. Проблема Margarita, видимо, в установке сертификата в контейнер, но выше был опубликован только сертификат.

Отредактировано пользователем 27 июля 2018 г. 9:24:17(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Евгений Афанасьев  
#15 Оставлено : 27 июля 2018 г. 9:26:37(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 12 раз
Поблагодарили: 292 раз в 289 постах
Автор: karpenko_vasily Перейти к цитате
Пытаюсь сохранить сертификат

Это весь сертификат? Он не декодируется asn1-декодером, видимо, не все данные.

P.S. И какой пароль на контейнер?

Отредактировано пользователем 27 июля 2018 г. 9:28:10(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline karpenko_vasily  
#16 Оставлено : 27 июля 2018 г. 9:31:31(UTC)
karpenko_vasily

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: afev Перейти к цитате
Спасибо, попробую. С сертификатом, выпущенным в тестовом УЦ, не воспроизводилось, проверю. Проблема Margarita, видимо, в установке сертификата в контейнер, но выше был опубликован только сертификат.


Проблема кажется не в контейнере, а в самом сертификате.
Указанный мной выше сертификат выпущен следующим образом и он также не сохраняется в контейнер:
Код:

        String request = "MIIBsjCCAWECAQAwgYoxDjAMBgNVBAsMBUtBU1NBMSQwIgYDVQQKDBvQntCe0J4gItCf0JDQoNCi" +
                "0J3QldCgLTAxNiIxCzAJBgNVBAYTAlJVMUUwQwYDVQQDDDzQkNCz0LDQu9GM0YbQvtCyINCa0L7Q" +
                "vdGB0YLQsNC90YLQuNC9INCT0LXRgNCw0YHQuNC80L7QstC40YcwYzAcBgYqhQMCAhMwEgYHKoUD" +
                "AgIjAQYHKoUDAgIeAQNDAARAalsvoXjUznhj3AAL/i7ZrCjeWwxjEbMloVKm6VbCK8olyGckMX31" +
                "O/ktelMJuYOKRCEH7aE2s1TR73uo7ssMxKBqMGgGCSqGSIb3DQEJDjFbMFkwCQYDVR0TBAIwADAU" +
                "BgcqhQMDewMEBAkGByqFAwN7BQQwJgYHKoUDA3sDAQQbDBlBMDAxVlQwNHPQkNCz0LDQu9GM0YbQ" +
                "vtCyMA4GA1UdDwEB/wQEAwIE8DAIBgYqhQMCAgMDQQAPmXR/04Ao1Jle/yGwdI0Ek2ooK0PMI/JJ" +
                "mDVSTrO9rIJN6NAafzRaxy7m9GpxQDYukJCONxpuAtO4MMsgCr7E";

        String httpAddress = "http://www.cryptopro.ru/certsrv/";
        byte[] certificateBytes = GostCertificateRequest.getEncodedCertFromBASE64(httpAddress, new ByteArrayInputStream(request.getBytes(StandardCharsets.UTF_8)));

        CertificateFactory factory = CertificateFactory.getInstance("X.509");
        X509Certificate certificate = (X509Certificate) factory
                .generateCertificate(new ByteArrayInputStream(certificateBytes));

Offline karpenko_vasily  
#17 Оставлено : 27 июля 2018 г. 9:33:54(UTC)
karpenko_vasily

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: afev Перейти к цитате
Автор: karpenko_vasily Перейти к цитате
Пытаюсь сохранить сертификат

Это весь сертификат? Он не декодируется asn1-декодером, видимо, не все данные.

P.S. И какой пароль на контейнер?


Пароль jscp01

certificate_jscp01.txt (2kb) загружен 2 раз(а).
Offline Margarita  
#18 Оставлено : 27 июля 2018 г. 10:31:28(UTC)
Margarita

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

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

Поблагодарили: 1 раз в 1 постах
Автор: afev Перейти к цитате
Здравствуйте.
Автор: Margarita Перейти к цитате
Но видимо проблема была в одном конкретном сертификате, потому что при следующих попытках все отрабатывало.

Если есть возможность воспроизвести, проверьте, пожалуйста, и приложите контейнер (если он тестовый) для воспроизведения ошибки. Спасибо.



Приложила контейнер, alias = SB_keyStore_38_user_2, password = 1, для ранее выложенного сертификата test_Cert.txt
SBrkeySt.000.zip (2kb) загружен 2 раз(а).

Offline karpenko_vasily  
#19 Оставлено : 27 июля 2018 г. 10:36:38(UTC)
karpenko_vasily

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: afev Перейти к цитате
Спасибо, попробую. С сертификатом, выпущенным в тестовом УЦ, не воспроизводилось, проверю. Проблема Margarita, видимо, в установке сертификата в контейнер, но выше был опубликован только сертификат.


Также хотел бы уточнить, что успешно удавалось сохранять выпущенные подобным способом сертификаты в JCP.HD_STORE_NAME (при установленном только JCP провайдере), проблема только в JCSP.HD_STORE_NAME.

Отредактировано пользователем 27 июля 2018 г. 11:33:49(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#20 Оставлено : 30 июля 2018 г. 7:25:02(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 12 раз
Поблагодарили: 292 раз в 289 постах
Здравствуйте. С сертификатом и контейнером Margarita не воспроизвелась ошибка, пробовал с текущей версией CSP, проверю с
Автор: Margarita Перейти к цитате
CSP 4.0.9842 для linux
. Ошибка karpenko_vasily воспроизвелась, но тут сертификат не соответствует ключу в контейнере - в панели CSP при установке сертификата получаем ту же ошибку.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.