Установка и настройка SoftHSM на Ubuntu

Focused young developer coding late in office writing script shown on computer monitors, serious handsome coder programmer hacker programming developing software applications working alone at night
В этой статье пойдет речь о том, как установить и настроить SoftHSM на Ubuntu версии 18.04 LTS. Будут представлены краткие рекомендации по инсталляции SoftHSM и приведен практический пример.
Стоит отметить, что пользователь должен получить привилегии администратора для выполнения операций, представленных ниже. Для практического примера будет использоваться SoftHSM версии 2.3.0.
1. Скачать и извлечь файл программы SoftHSM из Opendnssec

- Скачать SoftHSM можно, если перейти по следующей ссылке: https://dist.opendnssec.org/source/softhsm-2.3.0.tar.gz
- Затем следует извлечь данные, которые там содержатся: tar -xzf softhsm-2.3.0.tar.gz.
2. После загрузки и извлечения данных следует выполнить команду «./configure», чтобы проверить зависимости SoftHSM

- Чтобы проверить зависимости пакета SoftHSM, следует ввести упомянутую в заголовке команду – «./configure».
- При настройке программы пользователь может оптимизировать имеющиеся параметры безопасности или продолжить свою работу с параметрами по умолчанию. В программе SoftHSM доступно несколько различных опций. Представленный ниже скриншот показывает, какие параметры пользователь может изменить при необходимости. Как читатели могут увидеть, у него есть несколько доступных вариантов настроек. Для того чтобы увидеть все доступные параметры, необходимо использовать следующую команду:
./configure --help

Как уже было сказано ранее, с помощью этой команды пользователь способен просмотреть все параметры, доступные для настройки.
3. Если на компьютере доступны все нужные зависимости, процесс завершится успешно. После этого нужно скомпилировать файлы пакета с помощью команды «make»

После проверки зависимостей файлов проекта нужно ввести команду «make» для их компиляции.
4. После компиляции пользователь может начать установку пакета SoftHSM с помощью специальной команды

Чтобы установить пакет SoftHSM, следует ввести следующую команду:
sudo make install
После установки пакета SoftHSM пользователи смогут получить доступ к служебным инструментам этого программного обеспечения с помощью команды «softsm2-util».

5. После установки SoftHSM необходимо инициализировать мягкий токен, чтобы использовать это программное обеспечение
На приведенном ниже скриншоте показано, как инициализировать SoftHSM:

Пользователи могут использовать следующую команду для инициализации SoftHSM с номером слота и меткой:
softhsm2-util — init-token — slot 1 — label “Token-1”
Примечание: Человек способен использовать любой номер слота, который еще не используется в SoftHSM.
Когда пользователи инициализируют SoftHSM, им будет предложено ввести PIN-код пользователя, а также SO-Pin. Таким образом, pin-код используется для повторной инициализации токена, а пользовательский pin — для самого взаимодействия с токеном.
Отлично! Пользователь успешно установил и настроил SoftHSM на своей операционной системе Linux. Теперь пора начать пользоваться этим программным обеспечением в своих целях.
Пользователь будет с помощью языка программирования Java общаться с SoftHSM. Для этого ему понадобится конфигурационный файл (.cfg), который должен храниться в корневом каталоге проекта.
name = SoftHSM
library = /usr/local/lib/softhsm/libsofthsm2.so
slot = 1426856870
attributes(generate, *, *) = {
CKA_TOKEN = true
}
attributes(generate, CKO_CERTIFICATE, *) = {
CKA_PRIVATE = false
}
attributes(generate, CKO_PUBLIC_KEY, *) = {
CKA_PRIVATE = false
}
Выше Gist показывает пример конфигурационного файла SoftHSM.
Примечание: Пользователи должны выбрать конкретный слот. Они могут просмотреть все доступные слоты, используя следующую команду:
softhsm2-util — show-slots

Теперь пользователи могут общаться с SoftHSM, используя приведенный ниже Java-код. Для удобства читателей были добавлены комментарии к каждой строке, чтобы они могли понять, что происходит в коде. В приведенном ниже коде пользователь установил провайдера Sun PKCS, затем загрузил хранилище ключей, используя PIN-код пользователя, предоставленный при инициализации мягкого токена, и, наконец, вставил ключ шифрования в SoftHSM.
import java.security.*;
import sun.security.pkcs11.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
public class SoftHSM {
public static void main(String[] args) throws Exception {
// Set up the Sun PKCS 11 provider // using the configuration file name
String configName = "softhsm.cfg";
Provider p = new SunPKCS11(configName);
// exception handling
if (-1 == Security.addProvider(p)) {
throw new RuntimeException("could not add security provider");
}
// Load the key store // using User Pin given when initializing the token
char[] pin = "1234".toCharArray();
KeyStore keyStore = KeyStore.getInstance("PKCS11", p);
keyStore.load(null, pin);
// AES key
SecretKeySpec secretKeySpec = new SecretKeySpec("0123456789ABCDEF".getBytes(), "AES");
Key key = new SecretKeySpec(secretKeySpec.getEncoded(), "AES");
// Inserting the key in to the SoftHSM
keyStore.setKeyEntry("AA", key, "1234".toCharArray(), null);
keyStore.store(null);
// Retrieving the Secret Key Stored
SecretKey key1 = (SecretKey) keyStore.getKey("AA", "1234".toCharArray());
// Test Printing the Key Retrieved
System.out.println(key1);
}
}
В последних строках этого кода пользователь попытался восстановить использованный ключ шифрования. Однако у него это не удалось.

Как известно, SoftHSM не покажет пользователю использованный ключ шифрования. Но он может использовать объект секретного ключа и зашифровать свои данные.
Для удобства читателей ниже представлены все команды установки в Gist:
wget https://dist.opendnssec.org/source/softhsm-2.3.0.tar.gz
tar -xzf softhsm-2.3.0.tar.gz
./configure
./configure --help
make
make install
softhsm2-util --init-token --slot 0 --label "Token-1"
Автор переведенной статьи: Supun Sandeeptha.


