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

Уведомление

Icon
Error

7 Страницы«<23456>»
Опции
К последнему сообщению К первому непрочитанному
Offline Alexcrool  
#31 Оставлено : 16 июля 2021 г. 4:18:23(UTC)
Alexcrool

Статус: Участник

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

Сказал «Спасибо»: 3 раз
Поблагодарили: 9 раз в 3 постах
Это внешняя dll. Она должна лежать в папке с скомпилированным *.exe. Просто скопируй ее из папки с проектом туда, куда создается исполняемый файл программы.
Offline evarlamov  
#32 Оставлено : 16 июля 2021 г. 6:48:39(UTC)
evarlamov

Статус: Участник

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

Сказал(а) «Спасибо»: 2 раз
Спасибо, разобрался. Прошел еще ступеньку :)
Теперь следующая засада: сервис с подписанием на запросы отвечает, но с подписанием и шифрованием стабильно выдает 500 ошибку сервера.
Подскажете, куда копать?
Offline Alexcrool  
#33 Оставлено : 16 июля 2021 г. 7:07:46(UTC)
Alexcrool

Статус: Участник

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

Сказал «Спасибо»: 3 раз
Поблагодарили: 9 раз в 3 постах
Сложно сказать. только что проверил. все работает. на тестовом контуре.
кроме кода 500 должно еще что-то быть написано в ошибке.
Offline evarlamov  
#34 Оставлено : 16 июля 2021 г. 11:05:38(UTC)
evarlamov

Статус: Участник

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

Сказал(а) «Спасибо»: 2 раз
Может ли это быть связано с тем, что я использую тестовый сертификат (оформил на себя, как на частное лицо), у которого атрибута ОГРН нет?
Offline Alexcrool  
#35 Оставлено : 19 июля 2021 г. 4:17:06(UTC)
Alexcrool

Статус: Участник

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

Сказал «Спасибо»: 3 раз
Поблагодарили: 9 раз в 3 постах
Очень может быть. БЛ выдаются мед. организациям включенные в реестр ФРМО. Без ОГРН скорее всего тебя сервер и отфутболивает с 500. Иначе вернул бы код ошибки информационного взаимодействия, которые перечислены в спецификации.
Offline thpg  
#36 Оставлено : 19 июля 2021 г. 6:14:21(UTC)
thpg

Статус: Участник

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 4 раз в 4 постах
Ошибка 500 это ответ SOAP об ошибке. Если отправка просто html вручную, то надо включить чтение контента при ошибке 500, чтобы увидеть описание ошибки.
Offline evarlamov  
#37 Оставлено : 21 июля 2021 г. 10:57:36(UTC)
evarlamov

Статус: Участник

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

Сказал(а) «Спасибо»: 2 раз
Спасибо за рекомендации. Все еще домучиваю вариант из №22
Добрался до того, что могу отправить и получить ответ на шифрованное сообщение.
Расшифровать никак не получается, получаю "Плохие данные".

У меня с сертификатами такова ситуация:
- сертификат FSS_TEST_CERT_2021.cer (полученный здесь https://lk-test.fss.ru/cert.html). Им я шифрую отправляемое сообщение (EncryptSOAPRequest).
- сертификат (назовем его MY.cer) полученный в cryptopro.ru (он установлен в контейнере и, видимо, используется для формирования запроса в ФСС).

Правильно ли я понимаю, что ФСС высылает мне ответ, шифруя его моим открытым ключом (от MY.cer)?

Что можно проверить, если расшифровка не проходит?
У меня ошибка возникает на этом месте:
Цитата:

// Получение сессионного ключа импортом сессионного ключа ФСС (отправителя) на ключе согласования
CheckCryptoCall(CryptImportKey(ACryptoProvider, @remoteSessionKeyBlob[0], Length(remoteSessionKeyBlob), hAgreeKey, 0, @hSessionKey));


Offline Alexcrool  
#38 Оставлено : 21 июля 2021 г. 11:11:35(UTC)
Alexcrool

Статус: Участник

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

Сказал «Спасибо»: 3 раз
Поблагодарили: 9 раз в 3 постах
нет. не правильно понимаешь. Если бы ФСС отправил тебе шифрованное сообщения, значит ты ему все отправил правильно и он его принял. "Плохие данные" - это ответ ФСС на твое сообщение. Он не смог его разобрать, расшифровать.
Что значит ошибка возникает на этом месте? не компилирует или при ответе с фсс на этой точке выдает плохие данные?
Если ты не правил мой пример, то при получении ответа он далжен сохраниться в файл (responseDoc.SaveToFile('Resp'+MethodName+'.xml');) посмотри его что там пришло. Если полноценное xml сообщение. то хз. Если ошибка "Плохие данные", то ты ничего не отправил ... путного
Offline evarlamov  
#39 Оставлено : 21 июля 2021 г. 11:20:54(UTC)
evarlamov

Статус: Участник

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

Сказал(а) «Спасибо»: 2 раз
В файле нормальное xml-содержимое. RespGetNewLNNum.xml (16kb) загружен 9 раз(а).

Я решил, что ФСС получил мое сообщение, вернул шифрованный ответ (видим его в файлике RespGetNewLNNum). И лишь, когда я пытаюсь его расшифровать, получаю ошибку:
sample.png (16kb) загружен 24 раз(а).
Offline Alexcrool  
#40 Оставлено : 21 июля 2021 г. 11:48:06(UTC)
Alexcrool

Статус: Участник

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

Сказал «Спасибо»: 3 раз
Поблагодарили: 9 раз в 3 постах
Еще раз, для тех кто в танке ... пример рабочий, проверил еще раз только что. значит, что неверно подставляешь нужные параметры. поехали ...
1. модуль fmMain - функция GetNewLNNum. тут заполняется req.ogrn := 'ОГРН твоей организации';
2. модуль fmMain - ePoviderContainer.text = 'Имя контейнера пользователя который будет подписывать сообщение'. имя контейнера смотри через КриптоПро - сервис - посмотреть сертификат в контейнере. копируешь имя ключевого контейнер и вставляешь в это поле
3. т.к. все работает через объявленные фсс сервисы, то идет их перехват перед отправкой (для создания подписанного+шифрованного сообщения) и после получения (для расшифровки). смотрим что бы среда проходила эти события
т.к. в примере подпись и подпись+шифрование разделены. проверь что обработчик идет именно в модуль с шифрованием "WSLnCryptoV20"
RIO.OnBeforeExecute := TCrypto.FssOnBeforeExecute;
RIO.OnAfterExecute := TCrypto.FssOnAfterExecute;

4. процедура FssOnBeforeExecute - EncryptSOAPRequest(hCryptoProvider, 'FSS_TEST_CERT_2021.cer', signEnvelopeDoc);- тут надо передать сертификаты фсс. он должен лежать в корне с программой (НЕ С ПРОЕКТОМ). там где компилируется экзешник.
5. процедура EncryptSOAPRequest - заполняем переменные сертификатами:
CertUser := GetCertificate(FCryptoProvider, 'твойже сертификат открытый ключ'); - тут передаем открытый ключ своего сертификата из КОНТЕЙНЕРА. для примера он файловый (как от фсс) нужно его сохранить в DER формате из хранилища
// Получение отправителя. нам нужно для получения сертификата который вставим в запрос
CertFSS := GetCertificate(FCryptoProvider, ARemoteCertPath); - тут получаем сам сертификат acc который передавали шагом выше.
6. процедура расшифровки FssOnAfterExecute - тут в инициализации криптопровайдера проверь что бы былла ссылка на имя контейнера из FssOnBeforeExecute.
7. ну и по шагово пройди через все строки. с подфункций. должно работать. Если сертификаты верные
8. проверил еще раз на всякий. Успех.
Удачи. больше помочь нечем

Отредактировано пользователем 21 июля 2021 г. 11:48:40(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
7 Страницы«<23456>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.