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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline yury_90  
#1 Оставлено : 11 декабря 2018 г. 15:42:37(UTC)
yury_90

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

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

Здравствуйте, я на своем сайте делаю запрос на получение сертификата с помощью cadesplugin api.
Плагин установлен, страница выдает "Этот сайт пытается выполнить операцию с ключами..", я даю разрешение.
Дальше - в Firefox и Chrome запрос в виде PKCS#10 выводится в консоль и заданный <textarea>, но CSP не вызывается, окно где нужно выбрать носитель для сохранения и двигать мышкой для генерации последовательности не появляется.
В IE те же функции, только в синхронном варианте, вызывают CSP и сертификат успешно генерируется.
В чем может быть дело? Важно ли что https у меня на сайте тестовый, самоподписанный?
Offline Андрей Писарев  
#2 Оставлено : 11 декабря 2018 г. 18:31:19(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Здравствуйте.

Уточните используемые версии:
1) КриптоПРО CSP (версия продукта с вкладки Общие)
2) КриптоПРО Browser plug-in
3) Актуальность версии cadesplugin api и других зависимостей.


Проверьте поведение указанных браузеров на этой странице.


Для появления диалога выбора, где сохранять контейнер - в системе должно быть доступно более одного типа считывателя\носителя (реестр\флешка\логический диск, директория - в новой версии CSP).

Цитата:

в виде PKCS#10 выводится в консоль и заданный <textarea>, но CSP не вызывается

и
Цитата:

вызывают CSP и сертификат успешно генерируется.


Что означает утверждение в случае с IE?
Вы генерируете запрос, далее его отправляете в УЦ.
В обоих вариантах - генерируется запрос (PKCS#10), верно?
Техническую поддержку оказываем тут
Наша база знаний
Offline yury_90  
#3 Оставлено : 12 декабря 2018 г. 10:43:15(UTC)
yury_90

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

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

1) КриптоПРО CSP 4.0.9958
2) КриптоПРО Browser plug-in 2.0.13292.0
Расширения в Firefox и Chrome 1.2.7
3)Прямые ссылки
<script language="javascript" src="https://www.cryptopro.ru/sites/default/files/products/cades/cadesplugin_api.js"></script>
<script language="javascript" src="https://www.cryptopro.ru/sites/default/files/products/cades/es6-promise.min.js"></script>
<script language="javascript" src="https://www.cryptopro.ru/sites/default/files/products/cades/demopage/ie_eventlistner_polyfill.js"></script>
<script language="javascript" src="https://www.cryptopro.ru/sites/default/files/products/cades/demopage/Code.js"></script>

+ скрипты со страницы https://www.cryptopro.ru/certsrv/certrqma.asp сохранены локально. Да, и на этой странице все браузеры правильно работают и вызывают CSP, запрос создается.

Цитата:
"вызывают CSP и сертификат успешно генерируется." Что означает утверждение в случае с IE?

Под этим я имею ввиду что появляется окно с перемещением мыши для генерации последовательности, после этого сертификат сохраняется в реестре.

Цитата:
В обоих вариантах - генерируется запрос (PKCS#10), верно?

Да, функции одинаковые, только для IE синхронный вариант, для остальных асинхронный с Promise. Вот обе функции если нужно:
Код:
function request_ie() {
    var PKey = cadesplugin.CreateObject("X509Enrollment.CX509PrivateKey");
    PKey.ProviderName = "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider";
    PKey.ProviderType = 75;
    PKey.KeySpec = 1;

    var CertificateRequestPkcs10 = cadesplugin.CreateObject("X509Enrollment.CX509CertificateRequestPkcs10");
    CertificateRequestPkcs10.InitializeFromPrivateKey(0x1, PKey, "");

    var DistinguishedName = cadesplugin.CreateObject("X509Enrollment.CX500DistinguishedName");
    DistinguishedName.Encode("CN=\"TestName\";");
    CertificateRequestPkcs10.Subject = DistinguishedName;

    var KeyUsageExtension = cadesplugin.CreateObject("X509Enrollment.CX509ExtensionKeyUsage");
    var CERT_DATA_ENCIPHERMENT_KEY_USAGE = 0x10;
    var CERT_KEY_ENCIPHERMENT_KEY_USAGE = 0x20;
    var CERT_DIGITAL_SIGNATURE_KEY_USAGE = 0x80;
    var 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);
    CertificateRequestPkcs10.X509Extensions.Add(KeyUsageExtension);

    var Enroll = cadesplugin.CreateObject("X509Enrollment.CX509Enrollment");
    Enroll.InitializeFromRequest(CertificateRequestPkcs10);
    console.log(CertificateRequestPkcs10);

    sCertificate = Enroll.CreateRequest(1);
    var request_pkcs10 = document.getElementById('request');
    request_pkcs10.innerHTML = sCertificate;
}

function request_async() {
    return new Promise(function (resolve, reject) {
        cadesplugin.async_spawn(function* (args) {
            try {
                var PKey = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509PrivateKey");
                PKey.ProviderName = "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider";
                PKey.ProviderType = 75;
                PKey.KeySpec = 1;

                try {
                    var CertificateRequestPkcs10 = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509CertificateRequestPkcs10");
                } catch (e) {
                    alert('Failed to create X509Enrollment.CX509CertificateRequestPkcs10: ' + GetErrorMessage(e));
                    return;
                }
                yield CertificateRequestPkcs10.InitializeFromPrivateKey(0x1, PKey, "");

                try {
                    var DistinguishedName = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX500DistinguishedName");
                } catch (e) {
                    alert('Failed to create X509Enrollment.CX500DistinguishedName: ' + GetErrorMessage(e));
                    return;
                }

                var DistinguishedName_string = document.getElementById('locNameAlign').value;
                console.log(DistinguishedName_string);
                yield DistinguishedName.Encode("CN=\"TestName\";");
                yield CertificateRequestPkcs10.propset_Subject(DistinguishedName);


                try {
                    var KeyUsageExtension = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509ExtensionKeyUsage");
                } catch (e) {
                    alert('Failed to create X509Enrollment.CX509ExtensionKeyUsage: ' + GetErrorMessage(e));
                    return;
                }
                var CERT_DATA_ENCIPHERMENT_KEY_USAGE = 0x10;
                var CERT_KEY_ENCIPHERMENT_KEY_USAGE = 0x20;
                var CERT_DIGITAL_SIGNATURE_KEY_USAGE = 0x80;
                var CERT_NON_REPUDIATION_KEY_USAGE = 0x40;

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

                X509Extensions = yield CertificateRequestPkcs10.X509Extensions;
                yield X509Extensions.Add(KeyUsageExtension);

                try {
                    var Enroll = yield cadesplugin.CreateObjectAsync("X509Enrollment.CX509Enrollment");
                } catch (e) {
                    alert('Failed to create X509Enrollment.CX509ExtensionKeyUsage: ' + GetErrorMessage(e));
                    return;
                }
                yield Enroll.InitializeFromRequest(CertificateRequestPkcs10);

                var sCertificate = yield Enroll.CreateRequest(1);
                console.log(sCertificate);
                var request_pkcs10 = document.getElementById('request');
                request_pkcs10.innerHTML = sCertificate;
            } catch (e) {
                // console.log("Error: " + cadesplugin.getLastError(err));
            }
        }, resolve, reject);
    });
}
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.