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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline MaximZ  
#1 Оставлено : 10 июня 2016 г. 17:32:49(UTC)
MaximZ

Статус: Активный участник

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 2 раз в 2 постах
Добрый день.
Возможно ли с помощью Browser plugin создание запроса на обновление сертификата в формате PKCS7? Для дальнейшей передачи его по SOAP в УЦ?
Удается создавать запрос в формате PKCS10, но метод CertRequestSoapPort.SubmitRequest принимает PKCS7.

Offline MaximZ  
#2 Оставлено : 15 июня 2016 г. 11:06:20(UTC)
MaximZ

Статус: Активный участник

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 2 раз в 2 постах
Немного продвинулся.
Создаю запрос на сертификат pkcs10, далее подписываю его сертификатом, выданным тестовым УЦ крипто про 1.5
Правильно ли я понимаю, что при этом получается pkcs7?
Вот код
Создание pkcs10
Код:


           try {
                console.debug("Create request for cert");
                var objPrivateKey = Plugin.createObject("X509Enrollment.CX509PrivateKey");
                objPrivateKey.ProviderName = "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider";
                objPrivateKey.ProviderType = 75;
                    console.debug("CX509PrivateKey : OK");

                var AT_KEYEXCHANGE = 1;
                objPrivateKey.KeySpec = AT_KEYEXCHANGE;

                var ContextUser = 1;
                var objRequest = Plugin.createObject("X509Enrollment.CX509CertificateRequestPkcs10");
                objRequest.InitializeFromPrivateKey(ContextUser, objPrivateKey, "");
                    console.debug("CX509CertificateRequestPkcs10 : OK");

                var objDn = Plugin.createObject("X509Enrollment.CX500DistinguishedName");
                var XCN_CERT_NAME_STR_NONE = 0;
                objDn.Encode("CN=ZME123", XCN_CERT_NAME_STR_NONE);
                objRequest.Subject = objDn;
                    console.debug("CX500DistinguishedName : OK");


                var objEnroll = Plugin.createObject("X509Enrollment.CX509Enrollment");
                objEnroll.InitializeFromRequest(objRequest);

                var XCN_CRYPT_STRING_BASE64REQUESTHEADER = 3;
                var pkcs10 = objEnroll.CreateRequest(XCN_CRYPT_STRING_BASE64REQUESTHEADER);
                    console.debug("CX509Enrollment : OK");

            }
            catch (err) {
                console.debug("Ошибка при создании запроса: " + err);
            return;
        }


Далее подписываю
Код:

var oStore = Plugin.createObject("CAPICOM.Store");
        oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
        var oCertificates = oStore.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, "ZME123");
        if (oCertificates.Count == 0) {
            alert("Certificate not found: " + "ZME123");
            return;
        }

                var oCertificate = oCertificates.Item(1);
                console.debug("Certificate : OK");

                var oSigner = Plugin.createObject("CAdESCOM.CPSigner");
                console.debug("CAdESCOM.CPSigner : OK");

                oSigner.Certificate = oCertificate;


        var oSignedData = Plugin.createObject("CAdESCOM.CadesSignedData");
                console.debug("CAdESCOM.CadesSignedData : OK");

                oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;

                var content = pkcs10 ;
                    oSignedData.Content = content;
        try {
            var sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_BES, true);

        } catch (err) {
            alert("Failed to create signature. Error: " +err);
            return;
        }


Такую проверку проходит
Код:

var oSignedData = Plugin.createObject("CAdESCOM.CadesSignedData");
                try {
                    oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
                    oSignedData.Content = content;
                    oSignedData.VerifyCades(sSignedMessage, CADESCOM_CADES_BES, true);
                    alert("Sign OK ");
                } catch (err) {
                    alert("Failed to verify signature. Error: " + err);
                }


Содержимое sSignedMessage передаю в метод соап
CertRequestSoapPort.submitRequest(sSignedMessage, "");
Ошибка -2146889721 Неправильное значение хеша.
Тоже самое здесь https://www.cryptopro.ru/certsrv/certrqxt.asp
Помогите разобраться.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.