Как настроить rutoken на операционной системе linux
Внимание! В связи с объединением ПФР и ФСС с 01.01.2023 вместо СЗВ-ТД, 4-ФСС, СЗВ-СТАЖ, ДСВ-3 необходимо сдавать новую форму ЕФС-1. Подробнее
Отдел продаж:
8 (800) 600-36-51
moscow@astral.ru
Отдел продаж:

Настройка Рутокен в Линукс


вопросы
Настройка Рутокен в Линукс

Компания Рутокен занимается выпуском аппаратных и программных решений для аутентификации, защиты информации и электронных подписей. Рутокен ЭЦП — это физический носитель для хранения закрытого ключа электронной подписи. В момент заверения цифрового документа его вставляют в персональный компьютер через USB-разъём или порт для смарт-карт.

Подробно рассмотрим популярные вопросы о том, как работать с Рутокен в Линукс: какой драйвер и программу установить на ПК, где их скачать и как сменить PIN-код на Rutoken Linux.

Рутокен для *nix систем

Чтобы взаимодействовать с Рутокен под управлением операционной системой *nix необходимы специальные утилиты. Для deb-based системы требуется установить: библиотеку libccid версии не ниже 1.4.2, а также пакеты pcscd и libpcsclite1. Для RPM-based системы понадобятся пакеты: ccid, pcscd и pcsc-lite.

Пользователям Рутокен ЭЦП и Рутокен Lite драйверы в современных операционных системах не нужны. В стабильные или устаревшие дистрибутивы возможно потребуется внести изменения в конфигурационный файл.

Владельцам Рутокен S нужно произвести загрузку установочного скрипта, запустить его и следовать подсказкам мастера установки. После установки токен вставляется в USB-порт персонального компьютера.

Выбрать подходящий Рутокен для электронной подписи рекомендуем в нашем интернет-магазине. В каталоге представлены только сертифицированные модели физических носителей.

Драйверы для Рутокен S

Скачать драйвер Рутокен S для GNU/Linux RPM 32-bit (x86)

Версия:
1.0.4 от 11.02.2014
Поддерживаемые ОС:
32-разрядные Fedora/RedHat/Centos/AltLinux/Rosa/РЕД ОС

Скачать драйвер Рутокен S для GNU/Linux RPM 64-bit (x64)

Версия:
1.0.4 от 11.02.2014
Поддерживаемые ОС:
64-разрядные Fedora/RedHat/Centos/AltLinux/Rosa/РЕД ОС

Скачать драйвер Рутокен S для GNU/Linux DEB 32-bit (x86)

Версия:
1.0.4 от 11.02.2014
Поддерживаемые ОС:
32-разрядные Debian/Ubuntu/Mint/Astra Linux

Скачать драйвер Рутокен S для GNU/Linux DEB 64-bit (x64)

Версия:
1.0.4 от 11.02.2014
Поддерживаемые ОС:
64-разрядные Debian/Ubuntu/Mint/Astra Linux

Скачать драйвер Рутокен S для архитектуры MIPS (Байкал)

Версия:
1.0.4 от 11.08.2016

Скачать драйвер Рутокен S для GNU/Linux DEB ARM-64 (Байкал-М)

Версия:
1.0.7 от 27.09.21
Поддерживаемые ОС:
64-разрядные Debian/Astra Linux

Утилита

Скачать утилиту администрирования Рутокен

Утилита rtAdmin меняет метки токена, PIN-кодов и их настроек.

Версия:
2.4 от 22.06.2022

Проверка работы Рутокен ЭЦП в системе

Чтобы проверить работу Рутокен ЭЦП, пользователю необходимо выполнить следующие шаги:

  1. Подключить носитель к ПК.
  2. Ввести команду: pcsc_scan.
  3. Если пользователь вставил USB-токен и появилось данное сообщение:

значит физический носитель работает корректно.

Если пользователь вставил USB-токен и появилось данное сообщение:

значит смарт-карта работает корректно.

В последних строках сообщений указано название носителя. USB-токен — Rutoken ECP (DS), смарт-карта — Rutoken ECP SC).

  1. Если появилось данное сообщение:

значит Рутокен ЭЦП не работает, и следует определить проблемы в работе носителя в системе.

  1. Нажать комбинацию клавиш Ctrl+C.

Определение проблемы с Рутокен в системе

Существует две основных проблемы, которые возникают в системе GNU/Linux с Рутокен ЭЦП, это:

  • наличие пакета OpenCT;
  • отсутствие записей об устройстве в конфигурационном файле Info.plist.

Рассмотрим, как определить и решить каждую из них.

Наличие пакета OpenCT

Как определить проблему

Чтобы определить проблему необходимо:

  1. Остановить утилиту командой: sudo service pcscd stop.
  2. Запустить pcscd вручную в отладочном режиме: sudo /usr/sbin/pcscd -afddddd. Если доступа к команде sudo нет, то можно воспользоваться командой su.
  3. Если проблема с Рутокен ЭЦП появилась из-за наличия пакета OpenCT, то отобразится следующее сообщение:

Решение проблемы

Данная проблема решается двумя способами: удалением записей об устройстве в конфигурационном файле openct.conf или удалением пакета OpenCT.

Как удалить запись об устройстве в конфигурационном файле openct.conf

Данный способ применяется, если пакет OpenCT нужен пользователю для рабочих процессов и удалять его нельзя. Для удаления записей в конфигурационном файле openct.conf потребуется:

  1. Открыть конфигурационный файл командой: sudo nano /etc/openct.conf. Откроется конфигурационный файл openct.conf.
  1. Найти в конфигурационном файле массив driver ccid и удалить в нём строку: usb:0a89/0030, # Aktiv Rutoken ECP.
  2. Перезапустить сервис OpenCT командой: sudo service openct restart.
  3. Проверить работу носителя.

Как удалить пакет OpenCT

Для удаления OpenCT необходимо:

  1. Проверить его наличие пакета в системе командой. В deb-based системе: dpkg -s openct, в rpm-based системе: rpm -q openct. Сообщение install ok installed уведомит об установленном пакете.
  1. Удалить пакет OpenCT командой. В deb-based системе: sudo dpkg -r openct, в rpm-based системе: sudo rpm -e openct.
  1. После этого OpenCT будет удалён с компьютера и пользователю потребуется проверить работу подписи в системе.

Отсутствие записей об устройстве в конфигурационном файле Info.plist

Как определить проблему

Чтобы определить проблему необходимо:

  1. Остановить утилиту командой: sudo service pcscd stop.
  2. Запустить pcscd вручную в отладочном режиме: sudo /usr/sbin/pcscd -afddddd | grep Rutoken.
  3. Если в результате выполнения команды в окне терминала хоть один раз появится слово Rutoken, то проблема не в этом.
  1. Если отобразится пустая строка, то проблема связана с отсутствием строк в конфигурационном файле Info.plist.
  2. Требуется открыть в библиотеке libccid открыть конфигурационный файл Info.plist командой: sudo nano /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist
  1. Проверить наличие строк:
    • в массиве ifdVendorID строки 0x0A89;
    • в массиве ifdProductID строки 0x0030;
    • в массиве ifdFriendlyName строки Aktiv Rutoken ECP.

Как решить проблему

Чтобы решить проблему, пользователю нужно добавить недостающие строки в конфигурационный файл:

  • в массиве ifdVendorID строку 0x0A89;
  • в массиве ifdProductID строку 0x0030;
  • в массиве ifdFriendlyName строку Aktiv Rutoken ECP.

После этого следует проверить работу устройства в системе.

Утилита администрирования Рутокен

Пользователь применяет утилиту администрирования Рутокен rtAdmin версии 2.0 для настроек физического носителя электронной подписи. С помощью данной программы можно управлять памятью устройства, изменить PIN-код или метку токена.

Программа поддерживает все модели Рутокен от USB-носителей до смарт-карт, кроме Рутокен S. Для неё требуется использовать раннюю версию утилиты — rtAdmin 1.3 в ОС Windows. Также с этой версией работают с Рутокен ЭЦП в Windows XP/2003/Vista/2008.

При использовании утилиты рекомендовано подключать не больше одного носителя Рутокен.

Утилита администрирования Рутокен работает в следующих операционных системах:

  • MS Windows 11/10/8.1/8/2012/7/2008R2
  • MS Windows XP/2003/Vista/2008 – только в версии rtadmin 1.3
  • GNU/Linux
  • macOS

Скачать утилиту администрирования для Windows

Скачать утилиту администрирования Для Linux

Скачать утилиту администрирования Для macOS

Как работать с утилитой

Работа с программой осуществляется через командную строку. Команды представлены в таблице.

Описание команды Параметр командной строки Значение по умолчанию/Примечание
1 Форматирование токена Внимание! При форматировании всё содержимое Рутокена удаляется безвозвратно. Если устройство имеет встроенную флеш-память, при форматировании данные с флеш-памяти также будут удалены безвозвратно. Пожалуйста, перед форматированием сделайте копию важной информации! -f -
2 Текущий PIN-код администратора -o [PIN-код (≤ 32)] 87654321 Значение по умолчанию используется только при форматировании без указания параметра -o
3 Текущий PIN-код пользователя -с [PIN-код (≤ 32)] 12345678 Значение по умолчанию используется только при форматировании без указания параметра -c
4 Устанавливаемый PIN-код администратора -a [PIN-код (≤ 32)] 87654321 Значение по умолчанию используется только при форматировании без указания параметра -a
5 Устанавливаемый PIN-код пользователя -u [PIN-код (≤ 32)] 12345678 Значение по умолчанию используется только при форматировании без указания параметра -u
6 Устанавливаемый PIN2 (для Рутокен PINPad. Устанавливается на экране устройства) -t Если значение параметра не установлено, то будет использовано значение по умолчанию
7 Генерация PIN-кода администратора (используется при форматировании) -G [длина PIN-кода (8-32)] Генерировать PIN-код администратора установленной длины (8-32) (используется при форматировании). При использовании этого параметра параметр -u игнорируется
8 Генерация PIN-кода пользователя (используется при форматировании) -g [длина PIN-кода (8-32)] Генерировать PIN-код пользователя установленной длины (8-32) (используется при форматировании). При использовании этого параметра параметр -u игнорируется
9 Загрузка значений пар PIN-кодов из файла -b [имя файла] Файл загружается по адресу, который указан в значении параметра. В файле каждому PIN-коду соответствует отдельная строка. При использовании этого параметра параметры -a, -u, -G, -g игнорируются
10 Политика смены PIN-кода пользователя -p [кто может менять PIN-код: 1 – администратор, 2 – пользователь, 3 – пользователь и администратор] Значение по умолчанию - 2
11 Минимальная длина PIN-кода администратора -M [длина PIN-кода (6-31 для Рутокен ЭЦП и Рутокен Lite, 1 для Рутокен S)] 6
12 Минимальная длина PIN-кода пользователя -m [длина PIN-кода (6-31 для Рутокен ЭЦП и Рутокен Lite, 1 для Рутокен S)] 6
13 Максимальное количество попыток ввода PIN-кода администратора -R [число попыток (3-10)] 10
14 Максимальное количество попыток ввода PIN-кода пользователя -r [число попыток (1-10)] 10
15 Метка токена в кодировке Windows-1251 -L [метка токена] Установить метку токена в кодировке Windows-1251
16 Метка токена в кодировке UTF-8 -D [метка токена] Установить метку токена в кодировке UTF-8
17 Конвертация в UTF-8 (флаг для параметров, связанных с PIN-кодами) -U По умолчанию PIN-коды не конвертируются в UTF-8
18 Ограничение количества выполняемых итераций до одной -q -
19 Используемая библиотека PKCS#11 -z [путь к библиотеке] rtPKCS11.dll
20 Путь к конфигурационному файлу -n [путь к файлу] -
21 Протоколирование -l [путь к файлу лога] Путь: каталог, в котором лежит утилита. Имя файла: rtadmin.exe.log
22 Разблокировка PIN-кода пользователя и локальных PIN-кодов -P -o [PIN-код администратора (≤ 32)] Идентификатор локального пользователя указывать не нужно. Разблокировать локальные PIN-коды и PIN-код пользователя. Для использования этого параметра необходим логин с текущим PIN-кодом администратора
23 Установить SM mode (только для Bluetooth токена) -s [Пароли: (1 - опциональный пароль), (2 - 1 пароль), (3 - 6 паролей)] [Режим: (caps - только заглавные буквы), (digits - заглавные буквы и цифры)]
24 Исключенные токены при поточном форматировании -E [серийные номера токенов в формате: 0x46bc3390 или 932436970] В качестве разделителя серийных номеров использовать пробел. Также можно использовать опцию -E на каждый серийный номер
25 Показать возможные параметры и примеры -h, --help -
32 Запрос PIN-кода Рутокена из стандартного потока ввода в маскированном виде -I (i в верхнем регистре) <вместо значений PIN задавать stdin> Если аргумент флагов -u, -c, -o, -a равен "stdin", то этот PIN-код будет браться из стандартного потока ввода Примеры: 1) Cмена PIN-кода Пользователя: rtadmin -I -u stdin -o stdin 2) Разблокировка PIN-кода Пользователя: rtadmin -I -P -o stdin
33 Выбор Рутокена, с которым производится работа, по серийному номеру -S <серийный номер Рутокена в hex> Необходим, когда хотим производить работу с конкретным Рутокеном, а не со всеми. Пример: -S 3a7d6e32 -S 3A7D6E32
34 Получение расширенных политик PIN-кодов --show-expp Устройства Рутокен ЭЦП 3.0 поддерживают работу с расширенными политиками PIN-кодов Пользователя. Опция --show-expp позволяет получить текущее состояние этих политик
35 Установка расширенных политик PIN-кодов --set-expp [Использование: --set-expp (pin_policy_opt1) (value1) ( pin_policy_opt2) (value2) ... ] pin_policy_opts:
  • MinPinLength – Минимальная длина PIN-кода: <значение заданное при форматировании> - 31 символ
  • PinHistoryDepth – Глубина истории PIN-кодов Пользователя: 0-10
  • AllowDefaultPinUsage – Разрешить использование PIN-кода по умолчанию: true/false
  • PinContainsDigit – PIN-код содержит цифры: true/false
  • PinContainsUpperLetter – PIN-код содержит прописные буквы: true/false
  • PinContainsLowerLetter – PIN-код содержит строчные буквы: true/false
  • PinContainsSpecChar – PIN-код содержит спец. символы. chars: true/false
  • RestrictOneCharPin – Запретить PIN-код из повторяющегося символа: true/false
  • AllowChangePinPolicy – Разрешить Администратору менять политики PIN-кодов: true/false
  • RemovePinPolicyAfterFormat – Удалять политики PIN-кодов при форматировании: true/false
Устройства Рутокен ЭЦП 3.0 поддерживают работу с расширенными политиками PIN-кодов Пользователя. Опция --set-expp позволяет устанавливать политики PIN-кодов
26 Просмотр информации о подключенном Рутокене -T Вывод информации в о подключённом устройстве в виде: Серийный номер: dec Модель: Rutoken ECP\ Rutoken lite Память: dec в КБ/dec в КБ (свободная/всего) Длина PIN-кода Пользователя: dec/dec (мин/макс) Длина PIN-кода Администратора: dec/dec (мин/макс) Попытки ввода PIN-кода Пользователя: dec/dec (осталось/всего) Попытки ввода PIN-кода Администратора: dec/dec (осталось/всего)
27 Показать версию приложения -v, --version -
Параметры для управления флеш-памятью (Рутокен Flash)
27 Разбиение Flash-памяти на разделы (форматирование) Внимание! Форматирование удалит всю информацию с Flash-памяти. Сделайте копию важной информации - после форматирования ее будет невозможно восстановить. -F [идентификатор раздела (1-8)] [размер в Мб] [владелец: a - администратор, u - пользователь, l3-l9 - локальный пользователь] [права доступа: ro, rw, hi, cd] 1 весь объем (1DDC сейчас) a rw Один параметр используется для одного раздела. Чтобы создать много разделов используется последовательность команд -F. Для создания раздела необходим PIN-код администратора. Если он не указан, то будет использован PIN-код по умолчанию
28 Изменение прав доступа -C [идентификатор раздела (1-8)] [новые права доступа: ro, rw, hi, cd] [долговременность: p - постоянное изменение, t - временное] Для изменения прав используется PIN-код владельца раздела. Если PIN-код не указан, а владельцем раздела является администратор или пользователь, то будет использован PIN-код по умолчанию. Если владельцем раздела является локальный пользователь, а его PIN-код не был указан с использованием команды -O, то произойдет ошибка
29 Получение информации о размере Flash-памяти и атрибутах разделов -i [a - атрибуты всех разделов] [1-8 - атрибуты конкретного раздела] [sz - объем памяти] Формат ответа – аналогично п. 27 Разбиение Flash-памяти на разделы (форматирование): [идентификатор раздела (1-8)] [размер в Мб] [владелец: a - администратор, u - пользователь, l3-l9 - локальный пользователь] [права доступа: ro, rw, hi, cd] sz
Параметры для управления локальными пользователями
30 Устанавливаемый PIN-код локального пользователя -B [идентификатор локального пользователя (l3-l9)] [PIN-код] -
31 Текущий PIN-код пользователя -O [идентификатор локального пользователя (l3-l9)] [PIN-код] Если PIN-код для данного пользователя не определен, текущий PIN-код указывать не нужно

Если при форматировании пользователь не задаст новые PIN-коды, то установятся пин-коды по умолчанию. Параметры командной строки можно передать при помощи конфигурационного файла.

Форматирование

Утилита выполняет поточное форматирование токена:

  1. Пользователь настраивает конфигурационный файл или задаёт опции в командной строке и запускает утилиту.
  2. Происходит форматирование обнаруженных токенов. Результаты заносятся в лог-файл. Утилита ожидает подключения нового устройства или команды о завершении работы.
  3. Результат форматирования записывается в лог.

Утилита позволяет:

  • запускать форматирование токена с автоматической генерацией PIN-кода заданной длины;
  • задавать разным токенам одинаковые PIN-коды;
  • автоматически генерировать PIN-код в кодировке UTF-8;
  • работать с PIN-кодами, которые были сгенерированы в другой утилите. Для этого в настройках требуется указать файл, где хранится перечень созданых PIN-кодов с символом перевода строки в качестве разделителя. PIN-коды должны храниться парами, например:
    • userpin
    • adminpin
    • userpin2
    • adminpin2

Смена PIN-кода

PIN-код можно изменить под учётной записью пользователя или администратора. Это зависит от параметров, которые были указаны при форматировании. Результат смены PIN-кода записывается в лог. Если авторизация не произошла, в лог-файл записывается ошибка, а операция поточной смены PIN-кодов продолжается.

Как ведётся протокол работ в лог-файле

Лог-файл — это файл со строками. При различных операциях имеет следующее содержание:

  1. Форматирование
ID токена Результат форматирования PIN-код администратора PIN-код пользователя
В шестнадцатеричном и десятичном виде Format Passed/ Failed PIN-код администратора, который был установлен при форматировании PIN-код пользователя, который был установлен при форматировании
  1. Смена PIN-кода
ID токена Результат смены PIN-кодов PIN-код PIN-код
В шестнадцатеричном и десятичном виде Admin/User/Local user pin change Failed/Passed Cтарый PIN-код Новый PIN-код
  1. Форматирование Flash-памяти
ID токена Результат форматирования ID раздела Объем раздела Владелец раздела Права доступа
В шестнадцатеричном и десятичном виде Volume create Passed/ Failed ID созданного раздела (01-08) Объем раздела в Мб a / u / l3-l9 ro / rw / hi / cd
  1. Изменение атрибутов разделов Flash-памяти
  1. Получение информации об атрибутах разделов Flash-памяти
ID токена Результат ID раздела Новые права доступа Долговременность изменения прав
В шестнадцатеричном и десятичном виде Volume access mode change Passed/ Failed ID изменяемого раздела (01-08) ro / rw / hi / cd p / t
ID токена Результат ID раздела Объем раздела Владелец раздела Права доступа
В шестнадцатеричном и десятичном виде Getting volume info Passed/ Failed ID изменяемого раздела (01-08) Объем раздела в Мб a / u / l3-l9 ro / rw / hi / cd

По умолчанию файл находится в папке с утилитой под названием rtadmin.exe.log. Его имя и расположение можно задать самостоятельно. Если новое имя не задано при повторном запуске, Если при повторном запуске утилиты пользователь не указал новое имя лог-файла, то старый файл дополняется.

Установка дополнительного программного обеспечения

В deb-based и rpm-based системах используются разные команды.

Список операционных систем GNU/Линукс:

  • deb-based — Debian, Ubuntu, Linux Mint, Astra Linux;
  • rpm-based — RedHat, CentOS, Fedora, ALT Linux, ROSA Linux, МСВС, ГосЛинукс.

Чтобы работать по предоставленной инструкции, потребуется установить на ПК дополнительное программное обеспечение.

Для deb-based системы:

  • библиотеку libccid не ниже 1.4.2;
  • пакеты libpcsclite1 и pcscd;
  • pcsc-tools.

Для rpm-based системы:

  • ccid не ниже 1.4.2;
  • pcsc-lite;
  • pcsc-tools.

Для ALT Linux:

  • pcsc-lite-ccid;
  • libpcsclite;
  • pcsc-tools.

Все типы ОС требуют установку библиотеки OpenSC. Ниже в инструкциях рассмотрим данную библиотеку в качестве примера.

Проверка наличия библиотек и пакетов

Перед тем как установить библиотеки и пакеты, можно проверить их наличие. Делается это по следующим командам:

  1. В deb-based системе — dpkg -s libccid libpcsclite1 pcscd pcsc-tools opensc. Если наличие библиотеки или пакета подтверждается, то в разделе Status будет сообщение «install ok installed». А раздел Version отобразит их версию.
  1. В rpm-based системе — sudo rpm -q ccid pcsc-lite pcsc-tools opensc.
  1. В ALT Linux — sudo rpm -q pcsc-lite-ccid libpcsclite pcsc-tools opensc. Если доступ к команде sudo отсутствует, можно использовать команду su.

Установка библиотек и пакетов

Установка производится по следующим командам:

  1. В deb-based системе — sudo apt-get install libccid pcscd libpcsclite1 pcsc-tools opensc.
  1. В rpm-based системе, кроме ALT Linux — sudo yum install ccid pcsc-lite pcsc-tools opensc.
  1. В ALT Linux — sudo apt-get install pcsc-lite-ccid libpcsclite pcsc-tools opensc.

Изменение PIN-кода Рутокен

Для смены PIN-кода необходимо установить библиотеку PKCS#11 и определить её путь — librtpkcs11ecp.so. Для загрузки потребуется:

  1. Определить разрядность системы Линукс, в которой работает пользователь командой: uname -p. Если появляется строка подобная «i686», то система 32-разрядная.

Если появляется строка подобная «x86_64» , то система 64-разрядная.

  1. Скачать версию, соответствующую системе:

    Скачать библиотеку rtPKCS11ecp для GNU/Linux RPM 32-bit (x86)

    Версия:
    2.6.1.0 от 03.10.2022
    Поддерживаемые ОС:
    32-разрядные Fedora/RedHat/Centos/AltLinux/Rosa/РЕД ОС

    Скачать библиотеку rtPKCS11ecp для GNU/Linux RPM 64-bit (x64)

    Версия:
    2.6.1.0 от 03.10.2022
    Поддерживаемые ОС:
    64-разрядные Fedora/RedHat/Centos/AltLinux/Rosa/РЕД ОС

    Скачать библиотеку rtPKCS11ecp для GNU/Linux DEB 32-bit (x86)

    Версия:
    2.6.1.0 от 03.10.2022
    Поддерживаемые ОС:
    32-разрядные Debian/Ubuntu/Mint/Astra

    Скачать библиотеку rtPKCS11ecp для GNU/Linux DEB 64-bit (x64)

    Версия:
    2.6.1.0 от 03.10.2022
    Поддерживаемые ОС:
    64-разрядные Debian/Ubuntu/Mint/Astra

Чтобы определить путь до библиотеки librtpkcs11ecp.so необходимо ввссти команду: find/usr/*(lib|lib64) -name librtpkcs11ecp.so

PIN-код меняется по команде: pkcs11-tool --module {A} --login --pin {B} --change-pin --new-pin {C}, где:

A — это путь до библиотеки librtpkcs11ecp.so.

B — это текущий PIN-код устройства.

C — это новый PIN-код устройства.

После данных манипуляций PIN-код на Рутокен будет изменён.

Оставить заявку

Еще не определились? Напишите нам и мы ответим на Ваши вопросы

Оставить заявку

Продукты по направлению

1С-Отчетность

Сервис передачи отчетности в контролирующие органы из программ "1С:Предприятие"

Астрал Отчет 4.5

Программа для отправки отчетности и организации документооборота с контрагентами

Астрал Отчет 5.0

Онлайн-сервис для передачи отчетности в контролирующие органы

Комментарии для сайта Cackle
autohello-finger