Статус: Новичок
Группы: Участники
Зарегистрирован: 03.08.2014(UTC) Сообщений: 5
|
Автор: two_oceans Налоговая наверно не очень удачный пример, так как требуется предоставить пользовательский сертификат, что усложняет задачу. Если речь идет о stunnel, openssl, то нужен модуль (engine) c поддержкой алгоритмов гост. Есть индивидуальные отличия по версиям openssl, в некоторых 1.1.0 модули загружаются не в том порядке и гост не добавляется в список алгоритмов. Для гост-2001 есть старинный модуль с поддержкой гост, пожертвованный проекту openssl 1.0.0 от компании криптокомом. Гост-2012 и изменения архитектуры openssl 1.1.0 модуль не поддерживает, поэтому был выкинут из стандартной поставки openssl. Тем не менее на гитхабе есть его доработки до госта-2012 и госта-2015.
Есть и аналогичные новые модули других отечественных криптопровайдеров. Тут всплывает небольшая проблемка, что если заменить только модуль - работать будет частично (обычно отваливается поддержка самых новых версий tls, 1.0 работает, 1.2 и 1.3 не работают), видения отечественных криптопровайдеров и основного проекта openssl немного отличаются, договорится о включении патча не удалось. С другой стороны, если важен вопрос сертифицированности, то стандартная версия openssl несертифицирована. Поэтому как правило если нужен полный функционал, дело кончается полным удалением стандартной версии и замены на версию допиленную отечественным криптопровайдером с пробросом ссылок на допиленную версию.
Раз уж задаете на форуме КриптоПро, то у криптоПро есть модули gost_capi (гост-94, гост-2001 openssl 1.0.x, требует КриптоПро 3.6) и gostengy (гост-2001, гост-2012, openssl 1.1.x, требует КриптоПро 4.0). Подробная инструкция есть на форуме в разделе "Другие продукты". Прочитать нужно обязательно, так как у КриптоПро другой подход чем у старых инструкций по модулю криптокома, которых тьма в рунете. Присутствует такая же проблема поддержкой tls 1.2 на стандартной ветке openssl, есть патч, сертифицированной пропатченной версии openssl нет. Похоже на какой-то версии 1.1.x работает tls 1.2 и без патча, но я не проверял и точной информации не видел.
Основное отличие модулей КриптоПро - ключ генерируется только средствами КриптоПро и хранится только в контейнере КриптоПро. Соответственно невозможно работать с контейнером КриптоПро без установленного КриптоПро CSP. Модуль вместо реального закрытого ключа возвращает в openssl дескриптор ключа (как я понимаю каждый раз разный даже для одного ключа) и принимает только ранее выданный и еще не закрытый дескриптор. То есть ни экспортировать закрытый ключ в pem файл, ни импортировать pem файл, ни использовать pem файл невозможно, зато можно указать "c:"+имя контейнера КриптоПро вместо pem файла в поддерживаемой команде openssl, где требуется обращение к открытому или закрытому ключу. Сами операции будут проведены в КриптоПро CSP, запрошен пин-код в окне КриптоПро, через модуль результат будет возвращен в openssl. Да, все верно, некоторые команды (как генерация ключа genpkey, например) не поддерживаются вообще и выдадут что гост им незнаком.
Если копнуть поглубже, то помимо указания имени контейнера также возможно указание отпечатка или CN сертификата, но такой сертификат должен быть установлен в хранилище сертификатов со ссылкой на контейнер КриптоПро.
Для stunnel есть две версии с уже встроенной поддержкой такого функционала, в конфиге можно указывать как файл сертификата, так и его отпечаток или контейнер криптопро. А через stunnel подключиться к гост сайту curl ом очень легко - curl или браузер без поддержки гост соединяются на адрес туннеля по http, туннель предъявляет сайту прописанный в конфиге сертификат по гост https. Есть однако проблема с тем, что некоторые сайты (госзакупки, егиссо, госуслуги) любят редиректить по абсолютным ссылкам и выпадают из туннеля. Это уже можно решить через двойной прокси (первый прокси прописывается в браузере и собирает ссылки на один порт как "родительский прокси", которым является туннель, туннель меняет протокол на защищенный соединяется со вторым прокси, второй прокси корректирует прокси-версию протокола на обычую. Скорость режется в несколько раз, но работает. Либо можно без прокси разнести схему на 2 места и исправить hosts чтобы абсолютные ссылки вели на туннель. В моем случае сертифицировано или нет - не играет роли: задача просто стянуть страницу. Целевая страница требует сертификата и судя по всему должна обрабатываться так же как налог. В прочем чего тут скрывать, это личный кабинет Финсерта: lk.fincert.cbr.ru. У них там есть API, но угадайте по какими алгоритмами шифруется соединение к API? Ну вы поняли - одного цвета задач. +API не полное и не реализует нужного мне функционала. Так же в данном случае не играет роли TLS 1.0, или 1.1, или 1.2. В условиях данной задачи выходит, что последовательность действий в моем случае выглядит примерно так: - если я хочу TLS 1.0, то: найти модуль (engine) криптокома с поддержкой ГОСТ на TLS 1.0, поставить его в систему где ведется разработка, проверить соединение
- если мне окажется необходим весь функционал, то: удалить стандартный openssl, накатить допиленный, пробросить ссылки, проверить соединение
- если я хочу TLS 1.2, то: найти модуль gostengy от КриптоПро, найти патч для openssl, накатить патч+модуль, проверить соединение
Посмотрите, верно ли я вас понял? Автор: Русев Андрей В состав КриптоПро CSP для всех unix-систем входит пакет cprocsp-curl, содержащий библиотеку и приложение curl, которые умеют работать по ГОСТ TLS и сертифицированы к использованию (как и stunnel, но в отличие от openssl). Удобней всего использовать КриптоПро CSP 5.0, потому что только здесь есть поддержка не только ГОСТ TLS, но и TLS с зарубежными алгоритмами. Достойный ответ из которого стало ясно как жить дальше. Зачем вообще такие писать? Какая-то голимая отписка не решающая проблему - не более. Курл этот как я понял ставится отдельно от существующего. И если даже и ставится заместо существующего - проблему это не решает: код библиотек по старинке использует встроенные в ОС сервисы и они живут отдельной жизнью от данного решения так же не поддерживающей гост. В предыдущем посте хоть объяснили как сделать так, чтобы эти стандартные сервисы смогли работать с гостом: пропатчить/заменить. У вас же ответ звучит в стиле "ставьте CSP - будет вам счастье", так вот поставил я CSP - счастья нет. Ваш курл работает, мой из ОС - нет. Отредактировано пользователем 22 июня 2019 г. 11:28:39(UTC)
| Причина: опечатка
|