Настройка на PKCS#11#
Инсталиране на приложението Nitrokey#
Можете да получите модула NetHSM PKCS#11 като предварително компилиран двоичен файл или да го компилирате от изходния код.
Предварително компилирани двоични файлове#
Изтеглете файла на модула, съответстващ на вашата система, от страницата releases на хранилището.
Копирайте файла на модула в директорията, в която приложенията ви за PKCS#11 очакват да го намерят.
Компилиране от източника#
Инсталирайте веригата от инструменти Rust.
Изтеглете и извлечете изходния код от страницата с версиите на ` <https://github.com/Nitrokey/nethsm-pkcs11/releases>` __ или клонирайте хранилището на ` <https://github.com/Nitrokey/nethsm-pkcs11>` __.
Изпълнете
cargo build --release
в директорията с източника.
Статична конфигурация на DNS#
По подразбиране модулът търси конфигурационни файлове в:
/etc/nitrokey/p11nethsm.conf
/usr/local/etc/nitrokey/p11nethsm.conf
$HOME/.config/nitrokey/p11nethsm.conf
Ако са налични няколко файла, конфигурациите ще бъдат обединени, така че слотовете на всички конфигурационни файлове да бъдат използвани от модула.
Можете ръчно да зададете местоположението на файла с конфигурацията (само този файл ще бъде прочетен) с променливата env P11NETHSM_CONFIG_FILE
(например P11NETHSM_CONFIG_FILE=./p11nethsm.conf
).
Формат на файла с конфигурацията#
Конфигурацията е във формат yaml:
# Set this option to true to enable the compatibility option for the C_SetAttributeValue() function.
# This allows the applications using the Java Sun PKCS11 module (like EJBCA) to generate keys.
# When using this, the names given to the keys will be ignored and the keys will have random names.
# Under the hood it will store in memory the name given to the key when calling C_SetAttributeValue(). When a certificate is uploaded it will check if the name was previously passed to C_SetAttributeValue() and translate it to the real name on the NetHSM.
enable_set_attribute_value: false
# You can set the log file location here.
# If no value is set the module will output to stderr.
# If a value is set it will output to the file.
log_file: /tmp/p11nethsm.log
# Optional log level
log_level: Debug
# Each "slot" represents a NetHSM server
slots:
- label: LocalHSM # Name you NetHSM however you want
description: Local HSM (docker) # Optional description
# Users connecting to the NetHSM server
operator:
username: "operator"
password: "env:LOCALHSMPASS"
administrator:
username: "admin"
# List the NetHSM instances
instances:
- url: "https://keyfender:8443/api/v1" # URL to reach the server
# When the NetHSM has a self-signed certificate, it can be verified by a sha256 fingerprint of the NetHSM's certificate:
sha256_fingerprints:
- "31:92:8E:A4:5E:16:5C:A7:33:44:E8:E9:8E:64:C4:AE:7B:2A:57:E5:77:43:49:F3:69:C9:8F:C4:2F:3A:3B:6E"
Инстанции#
Ако в един и същи слот са изброени няколко екземпляра на NetHSM, тези екземпляри трябва да бъдат конфигурирани в клъстер. Удостоверенията на потребителите и ключовете трябва да са едни и същи за всички инстанции.
Модулът ще използва инстанциите по кръгов път, като при неуспех ще опита друга инстанция.
Потребители#
Потребителите оператор и администратор не са задължителни, но модулът няма да се стартира, ако няма конфигуриран потребител. Това е така, за да можете да конфигурирате модула само с потребител администратор, само с потребител оператор или и с двамата едновременно.
Когато са зададени двамата потребители, модулът ще използва оператора по подразбиране и ще използва потребителя администратор само когато действието го изисква.
Обикновеният потребител PKCS11 е съпоставен с оператора на NetHSM, а PKCS11 SO е съпоставен с администратора на NetHSM.
Пароли#
Паролата може да бъде предоставена по няколко начина:
В обикновен текст в конфигурацията
password: "mypassword"
В променлива на средата, прочетена от модула с префикс
env:
:env:ENV_STORING_THE_PASSWORD
Чрез функцията за вход на pkcs11, пример за pcks11-tool: pkcs11-tool –module libnethsm_pkcs11.so -p opPassphrase За да предоставите паролата на администратора, вместо нея трябва да използвате
--so-pin
:pkcs11-tool --module libnethsm_pkcs11.so --login --login-type so --so-pin Administrator
Ако паролата на даден потребител не е зададена в конфигурационния файл, ще се изисква влизане в системата, за да се предостави паролата (3-ти метод).
Неработещ NetHSM се счита за слот, в който не е наличен токън.