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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Mixalloff  
#1 Оставлено : 11 декабря 2017 г. 19:13:23(UTC)
Mixalloff

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

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

Сказал(а) «Спасибо»: 1 раз
Добрый день!
Столкнулся с проблемой - не получается создать запрос на сертификат с помощью асинхронного API. За основу брал пример с оф сайта: http://cpdn.cryptopro.ru...est-for-certificate.html в синхронном варианте.
При попытке создания запроса при вызове Enroll.CreateRequest вылезает ошибка: "Internal error. (0x8009001D)" без каких-либо дополнительных объяснений.
С чем это может быть связано? Код функции представлен ниже

Код:
async function createRequest() {
    const PKey = await cadesplugin.CreateObjectAsync("X509Enrollment.CX509PrivateKey");
    PKey.propset_ProviderName("Crypto-Pro GOST R 34.10-2001");
    PKey.propset_ProviderType(75);
    PKey.propset_KeySpec(1);

    const CertificateRequestPkcs10 = await cadesplugin.CreateObjectAsync("X509Enrollment.CX509CertificateRequestPkcs10");
    CertificateRequestPkcs10.InitializeFromPrivateKey(1, PKey, "");

    const DistinguishedName = await cadesplugin.CreateObjectAsync("X509Enrollment.CX500DistinguishedName");
    DistinguishedName.Encode("CN=TestName", 2097152);
    CertificateRequestPkcs10.propset_Subject(DistinguishedName);

    const X509Extensions = await CertificateRequestPkcs10.X509Extensions;

    const KeyUsageExtension = await cadesplugin.CreateObjectAsync("X509Enrollment.CX509ExtensionKeyUsage");
    const CERT_DATA_ENCIPHERMENT_KEY_USAGE = 0x10;
    const CERT_KEY_ENCIPHERMENT_KEY_USAGE = 0x20;
    const CERT_DIGITAL_SIGNATURE_KEY_USAGE = 0x80;
    const CERT_NON_REPUDIATION_KEY_USAGE = 0x40;

    KeyUsageExtension.InitializeEncode(
                CERT_KEY_ENCIPHERMENT_KEY_USAGE |
                CERT_DATA_ENCIPHERMENT_KEY_USAGE |
                CERT_DIGITAL_SIGNATURE_KEY_USAGE |
                CERT_NON_REPUDIATION_KEY_USAGE);

    X509Extensions.Add(KeyUsageExtension);

    const Enroll = await cadesplugin.CreateObjectAsync("X509Enrollment.CX509Enrollment");
    Enroll.InitializeFromRequest(CertificateRequestPkcs10);
    
    const CRYPT_STRING_BASE64REQUESTHEADER = 3;
    const certReq = await Enroll.CreateRequest(CRYPT_STRING_BASE64REQUESTHEADER);
    return certReq;
  }
Offline cross  
#2 Оставлено : 12 декабря 2017 г. 11:17:15(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
У вас скорее всего не правильно задано имя провайдера.
PKey.propset_ProviderName("Crypto-Pro GOST R 34.10-2001");
Попробуйте вот такое - "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider"
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
thanks 1 пользователь поблагодарил Анатолий Беляев за этот пост.
Mixalloff оставлено 12.12.2017(UTC)
Offline Mixalloff  
#3 Оставлено : 12 декабря 2017 г. 12:50:35(UTC)
Mixalloff

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

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

Сказал(а) «Спасибо»: 1 раз
После изменения имени провайдера изменился код ошибки: "Internal error. (0x80090020)". Но все равно никаких доп сведений...
Offline Mixalloff  
#4 Оставлено : 12 декабря 2017 г. 14:03:13(UTC)
Mixalloff

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

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

Сказал(а) «Спасибо»: 1 раз
Да, проблема была в названии провайдера. Установил название, по аналогии с https://www.cryptopro.ru/certsrv/certrqma.asp:
PKey.propset_ProviderName("Crypto-Pro GOST R 34.10-2001 KC1 CSP");
Все заработало, спасибо
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.