Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
- Astra Linux Special Edition РУСБ.10015-17
- Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) с установленным обновлением БЮЛЛЕТЕНЬ № 20211126SE16 (оперативное обновление 10)
- Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1) с установленным обновлением БЮЛЛЕТЕНЬ № 20211019SE81 (оперативное обновление 3)
- Astra Linux Common Edition 2.12.45
Введение
Пакет softhsm2 предоставляет набор инструментов для работы с программно моделируемыми ключевыми носителями (токенами). Использует собственную интерфейсную библиотеку. Являясь интерфейсом командной строки к библиотеке PKCS#11, может также применяться для работы с физическими ключевыми носителями используя другие библиотеки (в том числе интерфейсные библиотеки производителей).
Программно моделируемые ключевые носители не рекомендуется использовать для практических применений. Обосновывается это тем, что они хранятся в домашних каталогах пользователя в "незашифрованном" виде. Но такие ключевые носители защищены системами дискреционного и мандатного управления доступа.
Установка пакетов и предварительная настройка
Инструментарий softhsm представлен пакетом softhsm2. Установка пакета может быть выполнена с помощью графического менеджера пакетов или из командной строки командой:
В состав пакета входит интерфейсная библиотека libsofthsm2.so. Эта библиотека может использоваться так же, как библиотеки производителей токенов, например с инструментом pkcs11-tool. На платформе x86-64 библиотека находится в файле /usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so (также при установке создается ссылка на библиотеку /usr/lib/softhsm/libsofthsm2.so). На других платформах найти библиотеку можно выполнив команду:
Данные и настройки softhsm индивидуальны для каждого пользователя ОС и по умолчанию хранятся в двух подкаталогах домашнего каталога пользователя:
- подкаталог .softhsm-tokens — каталог хранения данных (токенов);
- подкаталог .config/softhsm2 — каталог хранения конфигурационного файла.
Иное размещение конфигурационного файла может быть указано в переменной окружения SOFTHSM2_CONF, иное место хранения данных может быть задано в конфигурационном файле.
При установке пакета создается индивидуальный конфигурационный файл и каталог данных для суперпользователя, для других пользователей их следует создать вручную для каждого пользователя, который будет использовать softhsm (пользователи могут делать это самостоятельно). Например, для текущего пользователя можно создать каталоги командой:
sed -i "s~^directories.tokendir =.*~directories.tokendir = /home/$USER/.softhsm-tokens~" ~/.config/softhsm2/softhsm2.conf
directories.tokendir = /home/<имя_пользователя>/.softhsm-tokens
Пользовательский конфигурационный файл размещается в домашнем каталоге: ~/.config/softhsm2/softhsm2.conf. Подробнее про параметры настройки см. man softhsm2.conf.
Проверить правильность настройки можно командой:
Available slots: Slot 0 Slot info: Description: SoftHSM slot ID 0x0 Manufacturer ID: SoftHSM project Hardware version: 2.4 Firmware version: 2.4 Token present: yes Token info: Manufacturer ID: SoftHSM project Model: SoftHSM v2 Hardware version: 2.4 Firmware version: 2.4 Serial number: Initialized: no User PIN init.: no Label:
Ключевой носитель перед использованием необходимо инициализировать:
Метка ключевого носителя далее может быть использована для его идентификации. Идентифицировать носитель необходимо если подключено несколько ключевых носителей.
Далее для работы с токенами softhsm можно использовать обычные инструменты для работы с токенами, установив соответствующие пакеты и указывая интерфейсную библиотеку softhsm в соответствии с порядком, принятым в используемом инструменте.
- Установить пакеты:sudo apt install gnutls-bin libengine-pkcs11-openssl
- Зарегистрировать интерфейсный модуль:sudo mkdir -p /etc/pkcs11/modules
echo -e "module: /usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so" | sudo tee /etc/pkcs11/modules/softhsm.module - Далее использовать обычные команды для работы с ключевыми носителями, например, создать на носителе ключевую пару:p11tool --generate-privkey rsa --login --label "<метка_ключевой_пары>" "pkcs11:token=<метка_ключевого_носителя>"
- Установить пакет:sudo apt install opensc
- Далее можно использовать обычные команды для работы с ключевыми носителями, указывая в них интерфейсный модуль softhsm:pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so -TВывод команды (по умолчанию присутствует пустой слот с не инициализированным токеном):
Available slots: Slot 0 (0x0): SoftHSM slot ID 0x0 token state: uninitialized
При использовании инструмента pkcs11-tool ключевые носители можно инициализировать с его помощью так же, как и физические ключевые носители:
После инициализации токена автоматически добавится новый пустой слот с не инициализированным токеном.
Дальнейшая работа с токенами softhsm не отличается от работы с аппаратными токенами, причем команда softhsm2-util поддерживает использование интерфейсных модулей других производителей, что дает возможность использовать её для работы с токенами этих производителей.
Для полного удаления токенов следует удалить содержимое каталога ~/.softhsm-tokens:
Справка по опциям команды softhsm2-util
Usage: softhsm2-util [ACTION] [OPTIONS] Action: --delete-token Delete the token at a given slot. Use with --token or --serial. WARNING: Any content in token will be erased. -h Shows this help screen. --help Shows this help screen. --import <path> Import a key pair from the given path. The file must be in PKCS#8-format. Use with --slot or --token or --serial, --file-pin, --label, --id, --no-public-key, and --pin. --init-token Initialize the token at a given slot. Use with --slot or --token or --serial or --free, --label, --so-pin, and --pin. WARNING: Any content in token will be erased. --show-slots Display all the available slots. -v Show version info. --version Show version info. Options: --aes Used to tell import to use file as is and import it as AES. --file-pin <PIN> Supply a PIN if the file is encrypted. --force Used to override a warning. --free Use the first free/uninitialized token. --id <hex> Defines the ID of the object. Hexadecimal characters. Use with --force if multiple key pairs may share the same ID. --label <text> Defines the label of the object or the token. --module <path> Use another PKCS#11 library than SoftHSM. --no-public-key Do not import the public key. --pin <PIN> The PIN for the normal user. --serial <number> Will use the token with a matching serial number. --slot <number> The slot where the token is located. --so-pin <PIN> The PIN for the Security Officer (SO). --token <label> Will use the token with a matching token label.