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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline pavenko_sv  
#1 Оставлено : 23 августа 2017 г. 13:08:48(UTC)
pavenko_sv

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

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

Сказал «Спасибо»: 39 раз
Решаю задачу:

1) Получить установленные локально сертификаты на страницу корпоративного сайта в нашей сети, выбрать сертификат и передать его на наш api (https://github.com/pavenkostanislav/GetingCertificatesList) ,
2) Авторирзироваться по SDK C# в системе Диадок для дальнейшего документоооборота (http://api-docs.diadoc.ru/ru/latest/howto/example_authorization.html#sdk),
3) Подписываться неформализованный Протокол с индивидуальным количеством подписантов.

Текущая реализация:

1) Список сертификатов получен через КриптоПро плагин

Код:
var oStore = cadesplugin.CreateObject("CAdESCOM.Store");
oStore.Open();


Получены данные сертификата:

Код:
body 
'subject': cert.SubjectName;
'thumbprint': cert.Thumbprint;
'privateKey': cert.PrivateKey;
'signature': cert.Export(CADESCOM_ENCODE_BASE64);


Отправляю через Angular 2 серилизованной JSON строкой на наш api:

Код:
let body = JSON.stringify(cert);
let headers = new Headers();
this.http.post('api/diadoc/Authenticate', body, { headers: headers }).map(res => res.json());

на сервере получаю:

Код:
var requestX509 = JsonConvert.DeserializeObject<EasyCert>(JsonConvert.SerializeObject(body), JsonSettings.RuDateTimeFormat);
var x509 = new System.Security.Cryptography.X509Certificates.X509Certificate2();
x509.Import(Convert.FromBase64String(requestX509.Signature));


И пользуясь DiadocSDK C# v. 1.45.2
отправляю Вам

Код:
var _diadocApi = new Diadoc.Api.DiadocApi(DiadocConstants.DiadocClientId, DiadocConstants.DiadocApiUrl, new Diadoc.Api.Cryptography.WinApiCrypt());
var authTokenCert = _diadocApi.Authenticate(x509.RawData);


Цитата:
Приходит ошибка 401


Вопросы:
Прошу помочь коррек тно создать экзампляр ЭП на сервере, предварительно передав туда данные через КриптоПро плагин


Зараннее спасибо.
Online Андрей Писарев  
#2 Оставлено : 23 августа 2017 г. 13:30:25(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2054 раз в 1594 постах
Цитата:
_diadocApi.Authenticate(x509.RawData);


Клиент в браузере отдельно с закрытым ключом + плагин,
... магия ...
аутентификация (к diadocApi) на сервере без закрытого ключа (связанного с переданным сертификатом)?

или что?
Техническую поддержку оказываем тут
Наша база знаний
Online Андрей Писарев  
#3 Оставлено : 23 августа 2017 г. 13:31:02(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2054 раз в 1594 постах
Цитата:
И пользуясь DiadocSDK C# v. 1.45.2
отправляю Вам


Кому? СКБ Контур?
Техническую поддержку оказываем тут
Наша база знаний
Offline pavenko_sv  
#4 Оставлено : 23 августа 2017 г. 13:37:32(UTC)
pavenko_sv

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

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

Сказал «Спасибо»: 39 раз
Автор: Андрей * Перейти к цитате
Цитата:
_diadocApi.Authenticate(x509.RawData);


Клиент в браузере отдельно с закрытым ключом + плагин,
... магия ...
аутентификация (к diadocApi) на сервере без закрытого ключа (связанного с переданным сертификатом)?

или что?


Если я правильно понял замечание:
Принцип работы:
Пльзователь имеет КриптоПрошный ключ и работает в самописном вэб-приложении. Ключик вставлен у него на рабочем компьютере, а сертификат зарегестрирован в системе у текущего пользователя.
Проблема именно в закрытом ключе, мне не удалось корректно серилизовать в JSON privatekey в таком виде который смог бы получить на сервере
Offline pavenko_sv  
#5 Оставлено : 23 августа 2017 г. 13:38:39(UTC)
pavenko_sv

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

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

Сказал «Спасибо»: 39 раз
Автор: Андрей * Перейти к цитате
Цитата:
И пользуясь DiadocSDK C# v. 1.45.2
отправляю Вам


Кому? СКБ Контур?


Передавалось СКБ Контур

Online Андрей Писарев  
#6 Оставлено : 23 августа 2017 г. 13:40:23(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2054 раз в 1594 постах
Автор: pavenko_sv Перейти к цитате

Проблема именно в закрытом ключе, мне не удалось корректно серилизовать в JSON privatekey в таком виде который смог бы получить на сервере


Вообще для чего?
Прокси-сервер с "закрытыми" ключами пользователей?
Если пользователь (по логике программиста) отдавал бы свой закрытый ключ на какой-то внутренний сервер, то что мешает на этом сервере иметь дубликат и уже работать "с контейнером на сервере"?


Вы API СКБ Контур понимаете?
Техническую поддержку оказываем тут
Наша база знаний
Offline pavenko_sv  
#7 Оставлено : 23 августа 2017 г. 13:57:39(UTC)
pavenko_sv

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

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

Сказал «Спасибо»: 39 раз
Автор: Андрей * Перейти к цитате
Автор: pavenko_sv Перейти к цитате

Проблема именно в закрытом ключе, мне не удалось корректно серилизовать в JSON privatekey в таком виде который смог бы получить на сервере


Вообще для чего?
Прокси-сервер с "закрытыми" ключами пользователей?
Если пользователь (по логике программиста) отдавал бы свой закрытый ключ на какой-то внутренний сервер, то что мешает на этом сервере иметь дубликат и уже работать "с контейнером на сервере"?


Да задача очень даже небезопасная, но наверное стоит сделать фэйс кирпичом и сказать не я придумываю такие задачи.
По факту хочется реализовать свой UI для Диадока


Автор: Андрей * Перейти к цитате
Автор: pavenko_sv Перейти к цитате
Вы API СКБ Контур понимаете?


Что именно я мог упустить?
Сейчас мной реализован интегратор на C# DiadocConnector
Думаю такого примера достаточно чтобы считать что понимаю "API СКБ Контур"

Но там С# запуск от конкретного имени пользователя консольного приложения. С JS всё иначе, тут либо с нашего http в их httpS передавать запросы что в принципе невозможно, либо пытаться сделать некоторые "танцы с бубном" как вариант передаю на свой апи json чтобы уже дальше Диадоковской Dll-кой запросы строить. Или по факту вызывать методы.

Авторизация на языке C# есть - работает.
Offline pavenko_sv  
#8 Оставлено : 23 августа 2017 г. 13:58:53(UTC)
pavenko_sv

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

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

Сказал «Спасибо»: 39 раз
Возможно Вы предложите иное решение? Как я могу авторизироватося в СКБ Контур по сертификату полученному через Ваш плагин?
Online Андрей Писарев  
#9 Оставлено : 23 августа 2017 г. 14:03:14(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2054 раз в 1594 постах
Автор: pavenko_sv Перейти к цитате
Возможно Вы предложите иное решение? Как я могу авторизироватося в СКБ Контур по сертификату полученному через Ваш плагин?


в SDK Диадока разве нет?
У них же реализовано это в браузере.
Меняйте под себя.
Техническую поддержку оказываем тут
Наша база знаний
Offline pavenko_sv  
#10 Оставлено : 23 августа 2017 г. 14:18:12(UTC)
pavenko_sv

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

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

Сказал «Спасибо»: 39 раз
Автор: Андрей * Перейти к цитате
Автор: pavenko_sv Перейти к цитате
Возможно Вы предложите иное решение? Как я могу авторизироватося в СКБ Контур по сертификату полученному через Ваш плагин?


в SDK Диадока разве нет?
У них же реализовано это в браузере.
Меняйте под себя.


У меня нет и я не нашёл описания как работает их Контуровский COM-объект
Но даже если и получилось бы в диадоке нет нужного нам функционала.
В дальнейшем мы хотил Подписывать блолее чем 3-мя подписями один неформализованный протокол и это я планировал реалиовать через ваш плагин
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.