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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline poleg-on  
#1 Оставлено : 23 сентября 2021 г. 16:59:19(UTC)
poleg-on

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Есть следующая задача:
Сервер, которому требуется подписываемый документ, на основе Linux Debian.
Ключ, с помощью которого наобходимо подписывать документы, находится на другой машине (на базе Windows 10).
Есть возможность расшарить любые папки, что на любом из компьютеров.

Как реализовать подпись документа, находящегося на Linux машине?
Offline Андрей *  
#2 Оставлено : 23 сентября 2021 г. 17:39:31(UTC)
Андрей *

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

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

Сказал «Спасибо»: 393 раз
Поблагодарили: 1611 раз в 1238 постах
Здравствуйте.

Скопировать документ на Windows 10, подписать там и получить обратно подпись.
Техническую поддержку оказываем тут
Наша база знаний
Offline poleg-on  
#3 Оставлено : 23 сентября 2021 г. 17:43:27(UTC)
poleg-on

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
скопировать из Linux в сетевую папку Windows можно.
Но как запустить утилиту подписания со стороны Linux?
Надо, чтобы все инициировалось Linux сервером.
Offline Андрей *  
#4 Оставлено : 23 сентября 2021 г. 18:19:17(UTC)
Андрей *

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

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

Сказал «Спасибо»: 393 раз
Поблагодарили: 1611 раз в 1238 постах
Linux - клиент, значит на Windows - "сервер",
какое-то ПО должно мониторить запросы (сетевые\файловые запросы) и подписывать.

Самый быстрый способ - через планировщик видимо и cmd\скрипт, который подписывает появившиеся файлы, переносит их в "ответную" папку, а Linux читает и копирует себе.

Или необходимо в онлайне?
+ вопросы по сертификатам\какие использовать и т.п.
Техническую поддержку оказываем тут
Наша база знаний
Offline poleg-on  
#5 Оставлено : 23 сентября 2021 г. 18:32:34(UTC)
poleg-on

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
В идеале, чтобы на Windows стороне был сервер, к которому можно обратиться по API:
Передать исходный документ,
Указать сертификат,
В ответ получить подписанный документ
Offline Андрей *  
#6 Оставлено : 24 сентября 2021 г. 9:41:25(UTC)
Андрей *

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

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

Сказал «Спасибо»: 393 раз
Поблагодарили: 1611 раз в 1238 постах
Автор: poleg-on Перейти к цитате
В идеале, чтобы на Windows стороне был сервер, к которому можно обратиться по API:
Передать исходный документ,
Указать сертификат,
В ответ получить подписанный документ


Web сервис или утилита, мониторит папку, в папке создаются файлы (например, xml, с описанием, какой файл, какой сертификат использовать и т.п)

Ищите что-то готовое.. или для программиста собираете информацию, ТЗ?
Техническую поддержку оказываем тут
Наша база знаний
Offline poleg-on  
#7 Оставлено : 24 сентября 2021 г. 9:52:05(UTC)
poleg-on

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Вдруг есть уже готовое решение...
Offline two_oceans  
#8 Оставлено : 24 сентября 2021 г. 10:14:34(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,351
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 90 раз
Поблагодарили: 319 раз в 300 постах
Добрый день.

Что-то все как-то наоборот, Linux сервер клиент, а Windows 10 сервер? С api такое расположение будет немного сложно в том плане, что Windows 10 клиентская операционная система и количество подключений к ней ограничено. На практике если развернуть на Windows веб-сервер, то один клиент в браузере с ним будет работать прекрасно, но вот несколько человек уже будут получать отказы. Конечно одиночное соединение REST API нагружает несколько меньше чем параллельные соединения браузера, но все же массовости так не получится.

Более перспективен вариант как порекомендовали выше. С поправкой на http - все же эпоха веб, кому нужны проблемы с межплатформенными SMB общими папками? Логически можно сделать чтобы был один сервер и 2 клиента: один клиент запрашивает подписание, второй клиент выполняет подписание, сервер их соединяет и выполняет проверку прав доступа.

Допустим, развернуть http сервер на Linux, куда некое ПО (клиент 1) от Linux может обратиться к http API и положить документ в очередь, указать сертификат (по отпечатку сертификата). В то же время на Windows 10 поставить в автозагрузку/планировщик некий клиент 2 (скрипт для WSH или PowerShell), который будет скачивать список очереди (ссылки на файлы с указанными отпечатками сертификатов). Если сертификат по отпечатку найден, то скачивать документ, рапортовать статус "в процессе подписания", подписывать, загружать подпись/подписанный документ (с автоотметкой "готово"). Если сертификат не найден, то сообщать об этом через http API. Соответственно через некоторое время клиент 1 может снова обратиться к серверу и получить либо ссылку на подпись/подписанный документ и скачать его либо статус "в очереди"/"в процессе подписания" либо отказ "не найден сертификат".

Так исключается прямое, в том числе множественное, обращение к Windows 10 и соответственно не нарушаются ограничения по подключениям. Остается придумать как "пинать" клиент2, если документ завис. Например, можно возвращать документ в очередь на подписание, если некий таймаут (относительно размера файла) и ждать перезапуска клиента 2 планировщиком. Правда, есть шанс что ждать придется долго (постоянно включенная Десятка может внезапно начать ставить обновления).

Мониторить папку немного сложно: можно пересканировать, но никто не поручится записался ли файл на этот момент целиком. Придется городить вычисление хэшей на сервере. Да, на Windows есть функции автоуведомления, что файл изменился/появился в папке, вот только работает она несколько своеобразно: сначала посылается уведомление что появилось имя файла (содержимого файла еще нет, размер 0 байт), потом что изменилось время, изменился размер (вот тут фактически файл может уже иметь данные, "но это не точно" что все данные уже приняты, возможно будут еще увеличения размера).

Отредактировано пользователем 24 сентября 2021 г. 10:37:37(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил two_oceans за этот пост.
poleg-on оставлено 24.09.2021(UTC)
Offline poleg-on  
#9 Оставлено : 24 сентября 2021 г. 10:19:22(UTC)
poleg-on

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
спасибо за предложенный механизм взаимодействия
Offline Андрей *  
#10 Оставлено : 24 сентября 2021 г. 11:03:04(UTC)
Андрей *

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

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

Сказал «Спасибо»: 393 раз
Поблагодарили: 1611 раз в 1238 постах
Автор: two_oceans Перейти к цитате

Мониторить папку немного сложно: можно пересканировать, но никто не поручится записался ли файл на этот момент целиком. Придется городить вычисление хэшей на сервере. Да, на Windows есть функции автоуведомления, что файл изменился/появился в папке, вот только работает она несколько своеобразно: сначала посылается уведомление что появилось имя файла (содержимого файла еще нет, размер 0 байт), потом что изменилось время, изменился размер (вот тут фактически файл может уже иметь данные, "но это не точно" что все данные уже приняты, возможно будут еще увеличения размера).


Нет никаких сложностей и проблем. Уведомления от NTFS можно фильтровать и ориентироваться не на сам документ.

Записывается документ.
Записывается его описание (небольшой файл, xml\json, в котором перечислены доп данные (номер\дата\сумма), какой сертификат использовать, куда записать подпись).
Утилита читает файл описания, выполняет необходимое и пишет в ответ результат, тот же файл + код\описание ошибки.

Linux читает обратно - появившийся файл описания...

Каждая из сторон обрабатывает и переносит к себе необходимое\очищает папку обмена.
Работает такое годами)
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#11 Оставлено : 24 сентября 2021 г. 11:04:57(UTC)
Андрей *

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

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

Сказал «Спасибо»: 393 раз
Поблагодарили: 1611 раз в 1238 постах
// тот же файл описания, но расширение другое, для отправителя (клиент с linux в примере).
Техническую поддержку оказываем тут
Наша база знаний
Offline two_oceans  
#12 Оставлено : 24 сентября 2021 г. 13:56:19(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,351
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 90 раз
Поблагодарили: 319 раз в 300 постах
Андрей, ну что Вы мне рассказываете )))) Работает конечно, но какой процент лишних телодвижений во всем этом? PHP скрипт может генерировать описание xml\json на лету в памяти без медленных файловых операций и соответственно мелкий временный файл описания также можно поймать в память в стороне клиента. Как бы незачем его писать на диск.

У меня самого программа синхронизации надцать лет была написана по такому принципу: был файл со списком файлов в папке и их характеристик (crc32 в том числе) и был "файл блокировки" списка (просто пустой). пока он есть другой экземпляр программы синхронизации файл со списком не трогал. Понятно что по разным причинам частенько все крашилось и файл блокировки оставался. Потому программа еще и его дату время создания сравнивала с текущей датой временем - если больше некого предела предыдущая сессия считалась "погибшей на боевом посту" и файл блокировки удалялся и создавался заново.

C NTFS это стало сложнее, так как эта система еще и кэширует файловые атрибуты на какое-то время, то есть переместил файл на другой диск - он типа удалился, переместил обратно через минуту - вуаля, у файла старое время создания, кэш минуту продержался и героически восстановил время. А я сижу и тихо матерюсь, так как перемещал как раз чтобы время создания изменилось. Значит надо либо ждать либо явно поменять время.

В этом году переписал программку для СМЭВ на уведомления нтфс, но "боевого теста" пока не было, терзают сомнения.

Для одиночного файла все работает годами и прекрасно. Но... уже ощущается почти как работа с мсдос. Больше всего меня удивляет в описанном то, что указываете про хэш и xml\json - так и просится http для связки с ними. http работает по TCP, то есть там уже встроен контроль правильности пакетов, зачем хэш; если считаем хэш, то почему не посчитать по гост-2012 256, тогда нам и файл не нужен; есть события по завершению http - не надо думать как просканировать папку или отфильтровать лишнее, придет событие именно файла который загружаешь.
Offline Андрей *  
#13 Оставлено : 24 сентября 2021 г. 14:34:22(UTC)
Андрей *

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

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

Сказал «Спасибо»: 393 раз
Поблагодарили: 1611 раз в 1238 постах
Автор: two_oceans Перейти к цитате
Андрей, ну что Вы мне рассказываете )))) Работает конечно, но какой процент лишних телодвижений во всем этом? PHP скрипт может генерировать описание xml\json на лету в памяти без медленных файловых операций и соответственно мелкий временный файл описания также можно поймать в память в стороне клиента. Как бы незачем его писать на диск.

У меня самого программа синхронизации надцать лет была написана по такому принципу: был файл со списком файлов в папке и их характеристик (crc32 в том числе) и был "файл блокировки" списка (просто пустой). пока он есть другой экземпляр программы синхронизации файл со списком не трогал. Понятно что по разным причинам частенько все крашилось и файл блокировки оставался. Потому программа еще и его дату время создания сравнивала с текущей датой временем - если больше некого предела предыдущая сессия считалась "погибшей на боевом посту" и файл блокировки удалялся и создавался заново.

C NTFS это стало сложнее, так как эта система еще и кэширует файловые атрибуты на какое-то время, то есть переместил файл на другой диск - он типа удалился, переместил обратно через минуту - вуаля, у файла старое время создания, кэш минуту продержался и героически восстановил время. А я сижу и тихо матерюсь, так как перемещал как раз чтобы время создания изменилось. Значит надо либо ждать либо явно поменять время.

В этом году переписал программку для СМЭВ на уведомления нтфс, но "боевого теста" пока не было, терзают сомнения.

Для одиночного файла все работает годами и прекрасно. Но... уже ощущается почти как работа с мсдос. Больше всего меня удивляет в описанном то, что указываете про хэш и xml\json - так и просится http для связки с ними. http работает по TCP, то есть там уже встроен контроль правильности пакетов, зачем хэш; если считаем хэш, то почему не посчитать по гост-2012 256, тогда нам и файл не нужен; есть события по завершению http - не надо думать как просканировать папку или отфильтровать лишнее, придет событие именно файла который загружаешь.


1. Где в моих сообщения есть упоминание про хеш?
2. Я предлагаю варианты на выбор и web-сервис был: Web сервис или утилита
3. Некоторым программистам проще записать в файл\прочитать ответ (разработчики ИС\1С), чем изучать WebAPI какого-то сервиса. У каждого подхода свои возможности\ограничения. Косвенный пример: вместо использования phpcades вызывают утилиты, порождая дальнейшие вопросы (как получить время подписания из ЭП?)
Техническую поддержку оказываем тут
Наша база знаний
Offline two_oceans  
#14 Оставлено : 27 сентября 2021 г. 5:36:37(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,351
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 90 раз
Поблагодарили: 319 раз в 300 постах
Автор: Андрей * Перейти к цитате
1. Где в моих сообщения есть упоминание про хеш?
Автор: Андрей * Перейти к цитате
Записывается его описание (небольшой файл, xml\json, в котором перечислены доп данные (номер\дата\сумма)
Вероятно, я тогда не до конца понял и домыслил. Самые простые хэши md4, md5, sha1 среды программирования считать умеют сразу, а где не умеют, там есть модули, есть реализации для JavaScript и php. Соответственно вместо "длинных" контрольных сумм повсеместно используют хэши, сейчас уже фактически в смысловом поле сравнялись понятия "[контрольная] сумма" и "значение хэш-функции". С той же CRС суммой я недавно заинтересовался и обнаружил, что это "семейство" функций и совершенно не обязательно брать определенные константы. Исходник на Си CRC32 нашелся, а на паскале не повезло. В итоге пришел к выводу, что для моей цели в аналогичной программе хэш sha1 от файла посчитать на Microsoft CryptoApi будет быстрее и надежнее чем реализовать CRC32 или таскать с программой Zlib.dll.

Про подходы и ограничения согласен - люди разные, кому как кажется удобнее. В месте с тем не могу не отметить, что функциональность плагина в нескольких местах ограничена и оставляет желать лучшего. Навскидку припомню, что были проблемы: поддержка не всех вариантов регулировки включения цепочки сертификатов (не включать/включить конечный/включать кроме корневого/включать все); некоторых полей отсутствовавших в Cadescom, но бывших в Capicom, в частности просмотра содержимого расширений сертификата и т.д.

Вроде как сделать их не так и сложно (формат сертификата и общий формат расширений известен - оид, признак критичности, значение). По крайней мере, хотелось бы увидеть их для стандартных расширений сертификата, использующихся в гост-сертификатах (в одном сертификате видел вместе десяток расширений, порознь наберется десятка полтора). На Windows можно было открыть тот же сертификата через CAPICOM и посмотреть чего нужно, но вот с phpcades вряд ли так получится. Поправьте меня, если в этом плане произошли какие-то улучшения за 5 лет.
Offline Андрей *  
#15 Оставлено : 27 сентября 2021 г. 9:16:49(UTC)
Андрей *

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

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

Сказал «Спасибо»: 393 раз
Поблагодарили: 1611 раз в 1238 постах
Автор: two_oceans Перейти к цитате
Автор: Андрей * Перейти к цитате
1. Где в моих сообщения есть упоминание про хеш?
Автор: Андрей * Перейти к цитате
Записывается его описание (небольшой файл, xml\json, в котором перечислены доп данные (номер\дата\сумма)
Вероятно, я тогда не до конца понял и домыслил. Самые простые хэши md4, md5, sha1 среды программирования считать умеют сразу, а где не умеют, там есть модули, есть реализации для JavaScript и php. Соответственно вместо "длинных" контрольных сумм повсеместно используют хэши, сейчас уже фактически в смысловом поле сравнялись понятия "[контрольная] сумма" и "значение хэш-функции". С той же CRС суммой я недавно заинтересовался и обнаружил, что это "семейство" функций и совершенно не обязательно брать определенные константы. Исходник на Си CRC32 нашелся, а на паскале не повезло. В итоге пришел к выводу, что для моей цели в аналогичной программе хэш sha1 от файла посчитать на Microsoft CryptoApi будет быстрее и надежнее чем реализовать CRC32 или таскать с программой Zlib.dll.



нет.. всё проще и о другом...
номер\дата\сумма - сумма в контексте с номером и датой документа... сумма = деньги), а не хеш.
// p.s. речь в примере про файловые АРМ, в интеграциях с операторами ЭДО... отправляется документ № ххх от хххх на сумму ххххх...
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.