Добрый день всем кого так же затронул этот вопрос!
Поручили реализовать на региональном портале авторизацию через госуслуги по средствам ЕСИА.
Собственно мой бэкграунд по работе с криптографией и ЭЦП где-то в районе плинтуса, но кому-то надо, поэтому.
Поднимаем контейнер с Debian[11] и python[3.8]. Ставим КриптоПро выбрав нужный -
инструкция. Устанавливаем сертификаты - проверяем доступны ли. КриптоПро потом всплывет, но пока без него.
WEB-сервис на python живет в докере на линуксе поэтому логично было бы использовать готовое
решение, но она рассчитана на ковыряние в opensll конфиге и подкладыванием в него гостовских движков(engine).
Код:'openssl smime -sign -md md_gost12_256 -signer {cert} -inkey {key} -outform DER'
Почему нас это не устраивает? Потому что это моветон и современный openssl(1.1.1) умеет в ГОСТ(верно же, умеет?) - надо просто накатить его сверху(?). Ан нет, у меня OpenSSL 1.1.1n 15 Mar 2022 и
smime: Unrecognized flag md_gost12_256. Ладно, потому что мы на форуме КриптоПро.
Сразу оговорюсь, что самый сок, то, как в формируемый URL на ЕСИА запихнуть корректный secret_client.
Но мы же на форуме КриптоПро и у них есть утилиты с которыми можно работать из командной строки.
Поэтому родилась
надстройка над оригинальной библиотекой.
Там сразу прыгаем в utils и смотрим: работа с 'm2crypto'(отдельный квест по установке(в win?) - особый шик в век pip), работа с openssl(ну, то же, что и выше) и подпись параметров через cryptcp! Бинго!
Код:"cryptcp -signf -norev -dir {tmp_dir} -der -strict -cert -detached -thumbprint {thumbprint} -pin '{password}' {f_in} 2>&1 >/dev/null"
Получаем длиннющую ссылку(если secret_client не сформировался то этот параметр будет пустым - нужно разбираться что не так) переходим, вбиваем данные в госуслуги и...
Получаем белую страницу по названием do. Ни ошибки, ни scope.
Куда смотреть?
Помогите добить вопрос чтоб инструкция в одном месте собралась.