Статус: Новичок
Группы: Участники
Зарегистрирован: 13.07.2017(UTC) Сообщений: 3
|
Добрый день. Пытаюсь пройти по примерам для browser plugin (https://www.cryptopro.ru/sites/default/files/products/cades/demopage/main.html) При переходе на страницу: https://www.cryptopro.ru...des/demopage/simple.htmlПоявляется сообщение о плагине: Плагин загружен. Версия плагина: 2.0.12888 Версия криптопровайдера: 4.0.9842 Криптопровайдер: Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider С сообщением У вас отстуствуют личные сертификаты. Вы можете получить сертификат от тестового УЦ, предварительно установив корневой сертификат тестового УЦ в доверенные. Перехожу на страницу получения сертификата ключа подписи (https://www.cryptopro.ru/certsrv/certrqma.asp) Поле CSP с надписью "Загрузка..." не дает ничего сделать. Пробовал генерировать в Firefox, IE. Подскажите как можно настроить сертификаты, что-бы можно было осуществить подпись через браузер. ОС: windows 10 x64 Браузер: Firefox 54.01
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 05.04.2017(UTC) Сообщений: 362 Сказал «Спасибо»: 3 раз Поблагодарили: 54 раз в 53 постах
|
Добрый день! Если имеется антивирусное ПО - отключите его на время формирования запроса на сертификат. Добавьте адрес https://www.cryptopro.ru/ в "Надёжные сайты (узлы)" настройках браузера и плагина. Запуск настроек КриптоПро ЭЦП Browser Plug-in осуществляется через Пуск. Для формирования запроса рекомендую использовать IE. В Firefox хитрая настройка работы плагина, которая у Вас вероятно не произведена. Дополнительно прошу сообщить для чего Вам нужен тестовый сертификат. У Вас нет личного? Как планируете использовать плагин в дальнейшем?
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 13.07.2017(UTC) Сообщений: 3
|
Задача стоит следующая: Есть карточка с полями в закрытой сети (аналог платежного поручения из примеров). Человек заходит в карточку, заполняет требуемые поля, вставляет USB брелок, нажимает подписать и подписывает заполненные поля своей подписью.
Подпись сохраняется в БД вместе с введенными данными, при просмотре подписанной карточки должна быть видна информация о том, кто подписал карточку и то, что данные в карточке актуальны и их не меняли с момента подписания.
Пока это делается для демонстрации заказчику.
Как я понял требуется создать криптоконтейнер (папка с видом XXXX.000 в корне диска) где будет храниться закрытый ключ, открытый ключ и сертификатом. При попытки подписи требуется сообщить плагину, о существовании контейнера и позволить выбрать его для подписи.
Пока не попал на документацию по созданию самого криптоконтейнера.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,630 Сказал «Спасибо»: 494 раз Поблагодарили: 2034 раз в 1578 постах
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 13.07.2017(UTC) Сообщений: 3
|
Спасибо, были проблемы с IE. Получилось решить и сгенерировать сертификат. Пытаюсь сделать валидацию подписи (пока только асинхрронная версия), но в любых случаях подпись считается валидной. Только изменение самой подписи приводит к ошибке, исходные строка никак не влияют на проверку подписи (Chrome,Firefox,Opera). Сделал тестовую страницу: http://vbsite.ru/crypto/Подскажите, что делаю не так? Листинг ниже: Код:
var CADESCOM_CADES_BES = 1;
var CAPICOM_CURRENT_USER_STORE = 2;
var CAPICOM_MY_STORE = "My";
var CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;
var CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;
var CADESCOM_BASE64_TO_BINARY = 1;
function SignCreate(certSubjectName, dataToSign) {
return new Promise(function(resolve, reject){
cadesplugin.async_spawn(function *(args) {
try {
var oStore = yield cadesplugin.CreateObjectAsync("CAdESCOM.Store");
*****************************
var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
yield oSignedData.propset_ContentEncoding(CADESCOM_BASE64_TO_BINARY);
yield oSignedData.propset_Content(dataToSign);
var sSignedMessage = yield oSignedData.SignCades(oSigner, CADESCOM_CADES_BES);
yield oStore.Close();
}
catch (err)
{
args[3]("Failed to create signature. Error: " + cadesplugin.getLastError(err));
}
}, certSubjectName, dataToSign, resolve, reject);
});
}
function run() {
var oCertName = document.getElementById("CertName");
var sCertName = oCertName.value;
if ("" == sCertName) {
alert("Введите имя сертификата (CN).");
return;
}
// Строку в base64
var dataInBase64 = window.btoa(document.getElementById("source").value);
var thenable = SignCreate(sCertName, dataInBase64);
thenable.then(
function (result){
document.getElementById('signature').value=result;
}, function(err) {
document.getElementById('signature').value = '';
alert(err)
});
}
function Verify(sSignedMessage, dataToVerify) {
return new Promise(function(resolve, reject){
cadesplugin.async_spawn(function *(args) {
var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
try {
// Значение свойства ContentEncoding должно быть задано
// до заполнения свойства Content
yield oSignedData.propset_ContentEncoding(CADESCOM_BASE64_TO_BINARY);
yield oSignedData.propset_Content(dataToVerify);
yield oSignedData.VerifyCades(sSignedMessage, CADESCOM_CADES_BES);
args[2]("Verify");
} catch (err) {
args[3]("Failed to verify signature. Error: " + cadesplugin.getLastError(err));
}
}, sSignedMessage, dataToVerify, resolve, reject);
});
}
function ver() {
// Строку в base64
var dataInBase64 = window.btoa(document.getElementById("source").value);
var sSignedMessage = document.getElementById('signature').value;
var verifyResult = Verify(sSignedMessage, dataInBase64);
verifyResult.then(function(res){
alert(res)
}, function(err){
alert(err)
});
}
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
По коду не понятно что вы изменяете и где не работает. Вы создаете подпись и ее тут же проверяете, почему ей вдруг стать не валидной? Когда внутрь генератора аргументы передаются через args то их лучше всех получать через args[i] а не только те которые resolve reject. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close