Статус: Новичок
Группы: Участники
Зарегистрирован: 18.12.2014(UTC) Сообщений: 7  Откуда: Томск
|
Добрый день. Подскажите пожалуйста, т.к. не имею большого опыта работы с ЭЦП. задача: 1. есть некий сайт, который будет работать с использованием Криптопро ЭЦП. А именно: а) при регистрации можно взять данные с сертификата. б) все сообщения и прикрепленные файлы пользователя должны подписываться ЭЦП. Будет использоваться ЭЦП browser plug-in. Необходим совет, или алгоритм действий, т.е. не до конца представляю очередность действий. Если с первой задачей более-менее понятно. с помощью JS и плагина выбираем сертификат, получаем из него данные и заполняем ими форму, то со второй не все понятно. 1. пользователь заполняет форму, прикрепляет файлы. 2. выбирает сертификат и нажимает кнопку "подписать" Что дальше? на сайте http://cpdn.cryptopro.ru...ontent/cades/plugin.html есть пример создания и проверки подписи. Текстовые поля подписывают и проверяются. Как подписываются файлы? что отправляется на сервер? подписанные данные или нет? если подписанные, то как они на сервере проверяются, ключи же не передаются. Или же плагин просто проверяет действительность подписи? т.е. подписывает некое поле и потом проверяет действительность подписи? и если все пучком, то отправляет фаорму на сервер? как тогда потом доказать, что это именно тот файл, который прислал пользователь, если в нем нет подписи... В общем хотелось бы услышать хоть что-то, что помогло бы мне начать двигаться в правильном направлении...
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,504   Сказал «Спасибо»: 554 раз Поблагодарили: 2250 раз в 1756 постах
|
Вместе с файлом отправляйте электронную подпись созданную через плагин для этого файла. На стороне сервера можно выполнить проверку этой подписи, извлечь сертификаты и т.п. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 18.12.2014(UTC) Сообщений: 7  Откуда: Томск
|
по сути получается, что я создаю форму, пользователь ее заполняет, прикрепляет файлы и отправляет форму. Также скрытым полем отправляется ЭЦП. Или ЭЦП формируется для каждого поля? На стороне сервера эта(и) ЭЦП проверяется. И если она действительна, то данные обрабатываются. Обязательно ли делать проверку на стороне сервера? Ведь плагин позволяет проверить подпись? Можно ли на стороне клиента делать проверку подвписи? если подпись действительна, то отправлять форму, если нет, то сообщать об ошибке? Отредактировано пользователем 20 декабря 2014 г. 11:23:42(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,504   Сказал «Спасибо»: 554 раз Поблагодарили: 2250 раз в 1756 постах
|
Автор: ozi  по сути получается, что я создаю форму, пользователь ее заполняет, прикрепляет файлы и отправляет форму. Также скрытым полем отправляется ЭЦП. Или ЭЦП формируется для каждого поля? Как запрограммируете, так и будет. Автор: ozi  На стороне сервера эта(и) ЭЦП проверяется. И если она действительна, то данные обрабатываются. Обязательно ли делать проверку на стороне сервера?
А цель какая у разрабатываемого сервиса? Принять что-то и сохранить на сервере? Если есть возможность проверки ЭП на стороне сервера - она должна быть. Никогда не доверяйте клиентской части (с) Автор: ozi  Ведь плагин позволяет проверить подпись? Можно ли на стороне клиента делать проверку подвписи? если подпись действительна, то отправлять форму, если нет, то сообщать об ошибке?
Не помешает. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 18.12.2014(UTC) Сообщений: 7  Откуда: Томск
|
1. наличие ЭЦП у сервиса сделано для того, чтоб решать спорные вопросы, касаемые авторства. Чтоб исключить заявления типа: "... я этого не отправлял...". 2. сохраняться будт как данные полей формы, так и файлы, прикрепленные к фарме. Причем полей может быть очень много в форме (различные wizard-ы добавления информации). Поэтому я и пытаюсь понять, как правильно сделать. Если, папример, я все поля (или парочку значимых) складываю в одну строковую переменую, но основе этой строки формирую подпись, подпись вкладываю в hidden поле и отправляю. На сервере проверяю подпись. Как с файлами быть? подпись как-то встраивается в файлы? или на сервере придется создавать таблицу и в ней хранить уже соответствие определенной подписи определенному файлу? Везде информация как то размыто данна. с другой стороны, чтоб на стороне сервера проверить подпись, то надо иметь открытые ключи всех пользователей... или как-то из подписи можно выдернуть открытый ключ? Отредактировано пользователем 21 декабря 2014 г. 15:07:48(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 18.12.2014(UTC) Сообщений: 7  Откуда: Томск
|
как происходит подпись нескольких файлов? подписывается почему то только один файл, а потом ошибка?
сейчас подписываю следующим способом:
$('#file').on('change', function(e){ var files = this.files; var sCertName = $('#certList').val(); for(var i = 0, f; f = files[i]; i++) { var reader = new FileReader(); // Closure to capture the file information. reader.onload = (function(theFile){ return function(e){ var header = ";base64,"; var sFileData = e.target.result; var sBase64Data = sFileData.substr(sFileData.indexOf(header) + header.length); var signedMessage = SignCreate(sCertName, sBase64Data); var verifyResult = Verify(signedMessage, sBase64Data); if(verifyResult){ $('<textarea />', {name: 'signedFiles[' + theFile.name + ']'}).val(signedMessage).appendTo('#ecpFiles'); }
}; })(f); reader.readAsDataURL(f); } });
функции SignCreate и Verify взяты из примера. если выбираю один файл, то все хорошо, поле добавляется... если несколько, то добавляется одно поле и затем плагин отваливается с сообщением uncaught exception: Key does not exist. (0x8009000D), а затем uncaught exception: Invalid algorithm specified. (0x80090008) и приходится перезапускать браузер
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 18.12.2014(UTC) Сообщений: 7  Откуда: Томск
|
подскажите хоть алгоритм просто. и вообще стоит ли подписывать файлы так? или может их проще через КриптоАРм подписать да отправить и файл, и подпись?
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 18.12.2014(UTC) Сообщений: 7  Откуда: Томск
|
со всеми вопросами вроде бы разобрался, кроме одного. подписание файлов с помощью ЭЦП-плагина происходит при помощи FileReader API, а он в свою очередь не работает с форматами офиса 2007 и выше, т.е. с форматами .docx, .xlsx и т.д. как тут быть?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close