|
Авторизация на сайте через API используя электронную подпись КриптоПро | ☑ | ||
---|---|---|---|---|
0
olezhan
31.10.18
✎
13:58
|
Добрый день!
Столкнулся с такой проблемой, есть некий сайт со своим АПИ, с доступом по ЭЦП. Для того что бы отправлять им документы требуется получить токен. Что бы получить токен надо сделать сначала get запрос на сайт, в ответ получаешь два параметра UUID и Data (тип строка). Собственно эту data надо подписать ЭЦП, затем завернуть в base64 и отправить им POST запросом. Проблема кроется где то в момент подписания. Сам алгоритм подписания такой: Для краткости ДД - Двоичные данные. 1) Эту data перевожу в двоичные данные 2)Создаю МенеджерКриптографии,указываю нужный сертификат (он там один) 3) Выполняю МенеджерКриптографии.Подписать(ДД). 4) Получаю подписанные ДД. 5) Используя функцию Base64Строка заворачиваю ДД в формат Base64. Вроде как все логично, однако, полученная строка Base64 отличается от той же самой подписанной строки на сайте криптоПро. Отличается некоторыми символами, не целиком. Вопрос: что происходит не так, и насколько можно доверять МенеджеруКриптографии 1С и функции Base64Строка ? Кусок кода: ДД = ПолучитьДвоичныеДанныеИзСтроки(ДанныеДляПодписи); ТипыСертификатов = Новый Массив; ТипыСертификатов.Добавить(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты); Список = ПолучитьСписокСертификатов(75, ТипыСертификатов, Истина); Сертификат = Список[0]; МенеджерКриптографии = Новый МенеджерКриптографии("", "", 75); МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = ТутПравильныйПароль; //МенеджерКриптографии.ВключениеСертификатовВПодпись = РежимВключенияСертификатовКриптографии.НеВключать; ПодписанныеДанные = МенеджерКриптографии.Подписать(ДД, Сертификат); //ПодписанныеДанные = ПолучитьСтрокуИзДвоичныхДанных(ПодписанныеДанные); ПодписанныеДанные = Base64Строка(ПодписанныеДанные); |
|||
1
Garykom
гуру
31.10.18
✎
14:03
|
(0) Эээ а в курсе что даже два последовательных "подписания" одной строки дадут слегка разный результат?
Обычно в "подпись" еще дата/время и часто некие параметры компа включаются. |
|||
2
Garykom
гуру
31.10.18
✎
14:04
|
(1)+ Точнее все зависит от алгоритма/стандарта подписи.
|
|||
3
olezhan
31.10.18
✎
16:33
|
Да в курсе, однако на сайте плагина крипто про как минимум первые 30 символов всегда одинаковые, даже если я просто цифру 1 подписываю. Алгоритм у сертификата только один, другими он подписывать не умеет.
Я стал склонятся у мысли что при подписи из 1С не включаются сами данные в подпись. Из СП: В данные подписи исходный файл не включается. Хотелось бы вообще услышать от кого то что да так можно подписать данные или что из 1С так подписать их не получиться и придется тогда городить что то с CaDEScom |
|||
4
NorthWind
31.10.18
✎
16:38
|
(3) речь не про алгоритм сертификата, а про алгоритм подписи. Например, это может быть CADES-BES (без штампа времени) или CADES-T (со штампом), затем, исходное сообщение в сообщении подписи может быть, а может и не быть, затем, сообщение может быть в кодировке DER, а может быть в BASE64. Нужно знать точные техданные к подписи. Или тыкать все возможные варианты, пока сервис не сожрет (так я тоже делал).
|
|||
5
asady
31.10.18
✎
16:41
|
(0) я бы попробовал в таком случае заюзать другие библиотеки
Команду системы в 1С пока не отменили |
|||
6
NorthWind
31.10.18
✎
16:41
|
(3) + на сайте (если вы криптопрошный пример имеете в виду) CADES-T подписывает. Вы уверены что вам именно он нужен? Вам тогда к крипто-про CSP еще нужно будет клиента штампов времени подкупить, там отдельная лицензия.
|
|||
7
NorthWind
31.10.18
✎
16:46
|
(5) можно проще - поставить плагин CryptoPro для сайтов и дальше через COM. Там есть COM-объект CADESCOM для этого
|
|||
8
NorthWind
31.10.18
✎
16:48
|
Дарю мою переписку на форуме крипто-про, возможно, поможет:
https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=10684 |
|||
9
olezhan
31.10.18
✎
17:21
|
(4) А можно поподробнее про алгоритмы подписи. Его можно указать где то в 1С?
Мне нужна именно подпись CADES-BES |
|||
10
Еврейчик
31.10.18
✎
17:23
|
(8)ты случайно не занимался проверкой подписи на сервере?
|
|||
11
olezhan
31.10.18
✎
17:35
|
(7) Плагин стоит. А есть хоть какой-то рабочий пример работы с кадеском из 1С?
Честно говоря не понимаю как указывать параметры кадес ком, например CADESCOM_CADES_BES = 1 |
|||
12
Garykom
гуру
31.10.18
✎
18:05
|
oSigner = cadesplugin.CreateObject("CAdESCOM.CPSigner");
oSigner.propset_Certificate(oCertificate); oSignedData = cadesplugin.CreateObject("CAdESCOM.CadesSignedData"); oSignedData.propset_Content(dataToSign); sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_BES); Примерно так, примеры на js есть тут http://cpdn.cryptopro.ru/content/cades/plugin-samples.html Можно по аналогии пробовать |
|||
13
Garykom
гуру
31.10.18
✎
18:10
|
(12) У меня код кривой совсем ибо собран из обычной синхронной и асинхронных версий, ищи нормальный пример.
|
|||
14
NorthWind
31.10.18
✎
18:15
|
(11) на 1С нет, на VBS могу дать рабочий пример, хотя, в принципе, он есть в переписке в (8) ближе к концу и там одна строчка удаляется (где TSAddress) и одна заменяется (метод Sign на SignCades).
|
|||
15
NorthWind
31.10.18
✎
18:17
|
(10) нет, но особенных сложностей не вижу, все то же самое, только вместо Sign (SignCades) Verify (VerifyCades) использовать... Нет?
|
|||
16
Garykom
гуру
31.10.18
✎
18:57
|
|
|||
17
Garykom
гуру
31.10.18
✎
18:57
|
||||
18
Еврейчик
31.10.18
✎
19:03
|
(15)меня интересует как установить на сервер нужный софт. нужно ведь Крипто про CSP установить на сервер. плюс пакет для доступа к крипто АПИ. А на форуме так плохо все обсуждено на эту тему.
плюс проверка подписи через плагин как ее сделать. на VB все было хорошо. а вот через js тяжело. потому что примера нет. Сейчас используется акинхронный js а примера как произвести проверку не имеется. |
|||
19
Garykom
гуру
31.10.18
✎
19:05
|
||||
20
Еврейчик
31.10.18
✎
20:10
|
(19)это создание подписи. а проверки подписи там нет. исползуя асинхронный
|
|||
21
Символ
31.10.18
✎
21:30
|
(0) Кажется. что автор столкнулся с маркировкой табака. А сайт - это сервис эксперимента по маркировке табака. https://xn--80ajghhoc2aj1c8b.xn--p1ai/business/projects/6/
|
|||
22
Garykom
гуру
31.10.18
✎
21:49
|
(21) Да пофиг с чем столкнулся, проблема что скоро еще много кто столкнется с подобными извратами.
|
|||
23
NorthWind
01.11.18
✎
08:20
|
(20) проблема вызов SignCades поменять на VerifyCades?
|
|||
24
NorthWind
01.11.18
✎
10:10
|
(18) мы о чем говорим? Сервер linux, windows? Серверная лицензия крипто-про, кстати, ни разу не дешевая, на винду что-то около 40 тысяч стоит.
|
|||
25
FDK2017
11.01.19
✎
10:56
|
(0) Добрый день.
Можете поделиться итогом? получилось ли? Сейчас также нужно "data подписать ЭЦП, затем завернуть в base64 и отправить им POST запросом", но приходит ответ ""error":"unauthorized","error_description":"Full authentication is required to access this resource"" |
|||
26
bootini
03.04.19
✎
17:10
|
(25) кто решил?
|
|||
27
bootini
03.04.19
✎
17:11
|
та же хрень:
""error":"unauthorized","error_description":"Full authentication is required to access this resource"" |
|||
28
dezss
03.04.19
✎
17:26
|
Код показывай.
В (0) почему-то не указывается явно МенеджерКриптографии.АлгоритмПодписи |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |