alibek Опубликовано 19 июня, 2015 · Жалоба С такой странной проблемой столкнулся. Создаю XML-файл (запрос для ЕРДИ), кодировка CP1251, формат unix (перевод строки 0x0A). Подписываю такой командой: openssl smime -sign -in request.xml -out request.sig -signer key.pem -outform DER Пакую в zip-архив, копирую на свой рабочий ПК, на ПК распаковываю (чтобы при копировании по SFTP формат файла не менялся). Проверяю на https://www.gosuslugi.ru/pgu/eds/order - подпись не верна. Меняю формат файла (0x0A заменяю на 0x0D,0x0A), проверяю подпись - подпись верна. Не пойму, почему такое происходит. OpenSSL подписал не те данные, что были в файле? Может быть ему нужно задать ключ, что файл бинарный? Или это веб-сервис https://www.gosuslugi.ru/pgu/eds/order своевольничает? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 19 июня, 2015 · Жалоба И сам же себе отвечаю. Да, это OpenSSL чудил. Добавил ключ "-binary", теперь подпись проходит проверку. Но странно, что OpenSSL так некорректно работает с символом перевода строки. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vop Опубликовано 19 июня, 2015 · Жалоба Но странно, что OpenSSL так некорректно работает с символом перевода строки. Видимо, он исключает его из подписи. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 19 июня, 2015 · Жалоба Видимо, он исключает его из подписи. Нет. Если в XML-файле вручную заменить 0x0A на 0x0D,0x0A, то тогда подпись проходит проверку. То есть OpenSSL подписал файл, в котором символ перевода строки 0x0D,0x0A. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 20 июня, 2015 · Жалоба Еще вопрос. Делаю проверку ЭЦП полученного дампа: #openssl smime -binary -verify -inform DER -in "$SIG" -content "$XML" Verification failure 140080318371496:error:21075075:PKCS7 routines:PKCS7_verify:certificate verify error:pk7_smime.c:328:Verify error:unable to get local issuer certificate Я неправильно проверяю? Или для проверки необходимо наличие цепочки доверия? Если да, то как подключить CA RTK? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 20 июня, 2015 · Жалоба Разобрался. Предлагаю ознакомиться: http://forum.nag.ru/forum/index.php?showtopic=79836&view=findpost&p=1141603 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
linx Опубликовано 23 июня, 2015 · Жалоба до 11.06.2015 17:00 проверка на перевод строки в их сервисе не было, в конце рабочего дня и рабочей недели вдруг удивительно перестала приниматься подпись. я верю в совпадения, но увиденной пост, что не только у меня возникли проблемы навевает на мысли о проверки на вшивость со стороны контролирующих органов Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...