Приветствую!
Столкнулись тут с проблемой авторизации на Госуслугах под Linux. После трёх дней ковыряния, поисков в интернетах и озарения, решение нашлось.
Суть проблемы: нет авторизации на Госуслугах, сообщение на форме авторизации "отсутствую действующие сертификаты".
Сопутствующие проблемы: если править конфиг IFCPlugin'а, то он предлагает его переустановить при авторизации.
Не смотря на вышеописанные проблемы, сам КриптоПРО, плагин КриптоПРО и некоторые ресурсы с авторизацией через ЭЦП (СБИС, например), работают прекрасно и всё видят, но вот авторизоваться на Госуслугах - не получается.
Набор для работы:
- ОС на ядре Linux (Ubuntu 18.04/20.04)
- CryptoPRO CSP 4 (9963)
- Плагин CryptoPRO (Linux)
- Плагин ЕСИА (IFCPlugin, Linux), версия на момент написания 3.1.1
- Браузер (любой, кроме ишака естественно)
- Токен RuToken Lite (для S только драйвер нужен)
Решение:
1. Ставим библиотеки
$ sudo apt install pcscd pcsc-tools opensc lsb-core lsb-release
2. Ставим КриптоПРО по дефолту через
$ sudo sh cp-4/linux-amd64_deb/install.sh
3. Доустанавливаем пакеты для работы с RuToken'ами
$ sudo dpkg --install cp-4/linux-amd64_deb/cprocsp-rdr-{gui-gtk,pcsc,rutoken}*.deb cp-4/linux-amd64_deb/lsb-cprocsp-{pkcs11-64}*.deb
3.1 Для RuToken S не забываем установить драйвера (хотя они ставятся вместе с КриптоПРО, но можно и обновить скачав свежие с сайта РуТокен)
$ sudo dpkg --install ifd-rutokens_*_amd64.deb
4. Ставим плагин КриптоПРО
$ sudo dpkg --install cp-4/cades_linux_amd64/cprocsp-pki-{cades,plugin}*.deb
5. Ставим плагин ЕСИА
$ sudo dpkg --install IFCPlugin-x86_64.deb
6. Правим конфиг плагина ЕСИА
$ sudo $EDITOR /etc/ifc.cfg
И добавляем в конец следующее:
...
{ name = "Crypto PRO CSP";
alias = "Crypto PRO CSP 4 KC1"
type = "pkcs11";
alg = "gost2001";
model = "CPPKCS 3";
lib_linux = "/opt/cprocsp/lib/amd64/libcppkcs11.so"
}
...
7. Ставим сертификат в хранилище
$ /opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifyc
...
\\.\Aktiv Rutoken lite 00 00\bla-bla-bla
...
$ /opt/cprocsp/bin/amd64/certmgr -install -store umy -cont '\\.\Aktiv Rutoken Lite 00 00\bla-bla-bla'
8. Запускаем браузер, проверяем работу плагина КриптоПРО, проверяем работу с ЕСИА...
9. Возможно, потребуется установка сертификатов головных УЦ, тогда качаем сертификаты и устанавливаем их (на примере ТЕНЗОР'а)
$ /opt/cprocsp/bin/amd64/certmgr -install -store uroot -file ~/Downloads/tensorca-2018_cp_gost2012.cer
$ /opt/cprocsp/bin/amd64/certmgr -install -store uroot -file ~/Downloads/uc_tensor-2018_gost2012.cer
Как обнаружилось: хорошо, что разрабы IFCPlugin'а добавили лог, в логе было вот что...
Первый
tail, после добавления секции из пункта 6, но с данными с одной из темы (от 2018 года, вроде) на форуме, содержал в себе следующее:
tail /var/log/ifc/engine_logs/engine.log
2020-10-14 11:11:40:IFC:get_slot_and_token_info:Token Model: "Rutoken lite"
2020-10-14 11:11:40:IFC:get_slot_and_token_info:result [0]
2020-10-14 11:11:40:IFC:check_token_support:STARTED
2020-10-14 11:11:40:IFC:check_token_support:result [17]
2020-10-14 11:11:40:IFC:list_keys_pkcs11:
Token is not supported -> skip it2020-10-14 11:11:40:IFC:list_keys_pkcs11:result [0]
2020-10-14 11:11:40:IFC:ifc_get_list_info:result [0]
2020-10-14 11:11:40:WEBLIB:process_request:Response string(length = 50) = "{"error_code":0,"ifc_list":[],"ifc_list_length":0}"
2020-10-14 11:11:40:WEBLIB:process_request:Request string(length = 97) = "{"func_name":"get_list_certs_by_cryptoid_array","params":{"cryptoID_array":[],"show_progress":0}}"
2020-10-14 11:11:40:WEBLIB:process_request:Response string(length = 34) = "{"error_code":0,"result_array":[]}"
В том виде данной секции отсутствовали параметры
alg и
model, а
lib_linux была обозначена просто как
libcppkcs11.so. Далее, решено было изменить параметр
lib_linux на полный путь до библиотеки (в данном случае до симлинка ;), после чего выхлоп получился следующий:
tail /var/log/ifc/engine_logs/engine.log
2020-10-14 11:20:25:IFC:init_ifc_config:STARTED
2020-10-14 11:20:25:IFC:init_ifc_config:result [0]
2020-10-14 11:20:25:IFC:init_ifc_records:STARTED
2020-10-14 11:20:25:IFC:init_ifc_records:params count: 11
2020-10-14 11:20:25:IFC:check_ifc_record:
ERROR:config params with number [10] not contained 'alg':init.c:482020-10-14 11:20:25:IFC:init_ifc_records:result [-1]
2020-10-14 11:20:25:IFC:ifc_create:Config records were read from config: -1
2020-10-14 11:20:25:IFC:ifc_create:ifc_create result [2]
2020-10-14 11:20:25:WEBLIB:log_error:ERROR:Error 2: Configuration Error:weblib.cpp:184
2020-10-14 11:20:25:WEBLIB:process_request:Response string(length = 16) = "{"error_code":2}"
И тут пошло-поехало... Добавили параметры
alg и
model со значениями "gost2012" и "RuToken lite" соответственно, получили сначала выхлоп:
tail /var/log/ifc/engine_logs/engine.log
2020-10-14 11:21:47:IFC:get_slot_and_token_info:
Token Model: "CPPKCS 3"2020-10-14 11:21:47:IFC:get_slot_and_token_info:result [0]
2020-10-14 11:21:47:IFC:check_token_support:STARTED
2020-10-14 11:21:47:IFC:check_token_support:result [17]
2020-10-14 11:21:47:IFC:list_keys_pkcs11:
Token is not supported -> skip it2020-10-14 11:21:47:IFC:list_keys_pkcs11:result [0]
2020-10-14 11:21:47:IFC:ifc_get_list_info:result [0]
2020-10-14 11:21:47:WEBLIB:process_request:Response string(length = 50) = "{"error_code":0,"ifc_list":[],"ifc_list_length":0}"
2020-10-14 11:21:47:WEBLIB:process_request:Request string(length = 97) = "{"func_name":"get_list_certs_by_cryptoid_array","params":{"cryptoID_array":[],"show_progress":0}}"
2020-10-14 11:21:47:WEBLIB:process_request:Response string(length = 34) = "{"error_code":0,"result_array":[]}"
Поменяли параметр
model на "CPPKCS 3" и получили выхлоп:
tail /var/log/ifc/engine_logs/engine.log
2020-10-14 11:23:11:pkcs11_engine-Crypto PRO CSP 4 KC1-0:check_if_token_in_slot_and_set_slot_and_token_info_to_ctx:PASSED
2020-10-14 11:23:11:pkcs11_engine-Crypto PRO CSP 4 KC1-0:open_session:ctx->slot_id = 0 ctx->sess_flags = 6
2020-10-14 11:23:11:pkcs11_engine-Crypto PRO CSP 4 KC1-0:open_session:PASSED
2020-10-14 11:23:11:IFC:load_pkcs11_engine:pkcs11 session was opened
2020-10-14 11:23:11:IFC:pkcs11_engine_login:STARTED
2020-10-14 11:23:11:IFC:pkcs11_engine_login:user pin is NULL
2020-10-14 11:23:11:IFC:pkcs11_engine_login:result [0]
2020-10-14 11:23:11:IFC:load_pkcs11_engine:
ERROR:unsupported algoritm:pkcs11_specific.c:5552020-10-14 11:23:11:IFC:load_pkcs11_engine:result [0]
2020-10-14 11:23:11:IFC:ifc_init_pkcs11_engine:result [0]
Который привёл в ступор, так как ЭЦП сделана именно с помощью ГОСТ-2012, а не 2001. На шару алгоритм был изменён на "gost2001" и всё заработало.
Такая вот история (:
ps./ Надеюсь, кому нибудь эта информация поможет ;)
Отредактировано пользователем 15 октября 2020 г. 13:42:53(UTC)
| Причина: Изменён пункт 3. Добавлена команда установки пакета pkcs11