PKCS#11 pomocou nástroja pkcs11-tool#
Táto príručka opisuje používanie ovládača PKCS#11 pre NetHSM. Príručka využíva nástroje z OpenSC. Pozrite si ich dokumentáciu, aby ste sa dozvedeli, ako ich používať vo vašom operačnom systéme.
Dôležité
Tento ovládač je ešte stále ranou implementáciou Proof of Concept, ktorá implementuje len funkcie potrebné na prevádzku serverov TLS.
Inštalácia#
Inštalácia predkompilovanej knižnice#
Archív s najnovšou verziou si stiahnite zo stránky releases úložiska. Použite archív s vydaním, ktorý v názve obsahuje názov vášho operačného systému.
Rozbaľte súbory zo stiahnutého archívu pomocou archivačného programu podľa vlastného výberu.
Skopírujte rozbalenú knižnicu do príslušnej cesty vo vašom operačnom systéme. Cesta závisí od vašej inštalácie a konfigurácie OpenSC.
Kompilácia zo zdrojového kódu#
Dôležité
Tento ovládač je možné skompilovať len pomocou oficiálneho kompilátora Go. Nepoužívajte kompilátor GNU Go (GCC-Go). Informácie o tom, ako ho nainštalovať, nájdete na ich webovej stránke ` <https://go.dev/doc/install>` __.
Archív s najnovšou verziou si stiahnite zo stránky releases úložiska. Použite archív s vydaním, ktorý v názve obsahuje Zdrojový kód.
Rozbaľte súbory zo stiahnutého archívu pomocou archivačného programu podľa vlastného výberu.
V adresári s rozbaleným zdrojovým kódom vykonajte nasledujúci príkaz na kompiláciu knižnice.
./build.sh
./build.sh
Skopírujte rozbalenú knižnicu do príslušnej cesty vo vašom operačnom systéme. Cesta závisí od vašej inštalácie a konfigurácie OpenSC.
Konfigurácia#
Konfiguračný súbor p11nethsm.conf sa vyžaduje a používa sa na konfiguráciu spojenia medzi ovládačom PKCS#11 a NetHSM.
Príklad konfiguračného súboru vyzerá takto.
YAML 1.1
---
p11nethsm:
logfile: /tmp/p11nethsm.log
maxsessioncount: 5
debug: true
slots:
- label: NetHSM1
description: NetHSM Zone A
url: "https://nethsmdemo.nitrokey.com/api/v1"
# certSHA256:
# - "0C:66:DC:EB:4D:12:C3:24:FC:82:F4:1D:4C:16:44:12:1D:00:79:FF:36:96:65:E2:21:C4:36:94:F7:8E:22:89"
user: "operator"
password: "env:NETHSM_PASS"
Upravte konfiguračný súbor p11nethsm.conf podľa svojho prostredia.
Konfiguračný súbor môže obsahovať viacero slotov v poli slots. Sloty predstavujú viacero nasadení NetHSM. Pole label slotu musí obsahovať jedinečný názov. Kľúče url, user a password sú povinné. Z bezpečnostných dôvodov sa odporúča odovzdať heslo v premennej prostredia. Na tento účel sa v kľúči password odovzdáva env:NETHSM_PASS, kde NETHSM_PASS je názov premennej prostredia obsahujúcej heslo. Kľúč certSHA256 je potrebné nastaviť, ak certifikát TLS nie je podpísaný certifikačnou autoritou (CA), ktorá sa nachádza v úložisku certifikátov operačného systému.
Konfiguračný súbor je potrebné uložiť buď do nasledujúcich ciest, alebo do adresára, v ktorom sa aplikácia spúšťa.
$HOME/.nitrokey
/etc/nitrokey/
Riadenie kľúčov#
Informácie#
Zobrazenie informácií o verzii cryptoki a ovládača PKCS#11.
$ pkcs11-tool --module p11nethsm.so --show-info
Cryptoki version 2.40
Manufacturer Nitrokey GmbH
Library NetHSM PKCS#11 module (ver 0.1)
Using slot 0 with a present token (0x0)
Zoznam slotov#
Informácie o dostupných slotoch. Uvedené sloty závisia od konfigurácie poľa slotov v konfiguračnom súbore p11nethsm.conf. Viac informácií o konfigurácii slotov nájdete v kapitole Konfigurácia.
$ pkcs11-tool --module p11nethsm.so --list-slots
Available slots:
Slot 0 (0x0): NetHSM Zone A
token label : NetHSM1
token manufacturer : Nitrokey GmbH
token model : NetHSM
token flags : rng, token initialized, PIN initialized, readonly
hardware version : 0.1
firmware version : 0.1
serial num : 0
pin min/max : 3/256
Poznámka
Ak vaša konfigurácia podporuje viac ako jeden slot, možno budete musieť v príkazoch pkcs11-tool pridať možnosť –slot <arg>, aby ste použili ten správny.
Generovanie kľúča#
Vygenerujte pár kľúčov a uložte ho do NetHSM.
Poznámka
Ovládač PKCS#11 v súčasnosti túto funkciu nepodporuje. Pár kľúčov možno vygenerovať pomocou nitropy alebo požiadavky REST API. Viac informácií o generovaní kľúča nájdete v kapitole Generovanie kľúča.
Zoznam kľúčov#
Zobrazenie informácií o kľúčoch a certifikátoch v úložisku kľúčov ** v zariadení NetHSM.
$ pkcs11-tool --module p11nethsm.so --list-objects
Using slot 0 with a present token (0x0)
Private Key Object; RSA
label: myFirstKey
ID: 6d7946697273744b6579
Usage: decrypt, sign
Access: sensitive, always sensitive, never extractable
Public Key Object; RSA 0 bits
label: myFirstKey
ID: 6d7946697273744b6579
Usage: none
Access: none
Prečítajte si kľúče#
Čítanie kľúčov a certifikátov z úložiska kľúčov ** v zariadení NetHSM. Z NetHSM nie je možné čítať súkromné kľúče.
Verejný kľúč dvojice kľúčov možno prečítať takto.
$ pkcs11-tool --module p11nethsm.so --read-object --type pubkey --label myFirstKey -o public.key
Certifikát páru kľúčov možno čítať takto.
$ pkcs11-tool --module p11nethsm.so --read-object --type cert --label myFirstKey -o public.key
Vrátené certifikáty alebo verejné kľúče sú kódované v ASN.1. Údaje možno dekódovať pomocou nástroja dumpasn1, pretože obsahujú údaje vo formáte DER. Formát DER možno pomocou OpenSSL previesť na formát PEM.
Napísať kľúče#
Zápis kľúčov a certifikátov do úložiska kľúčov ** v zariadení NetHSM.
Súkromný kľúč dvojice kľúčov možno zapísať takto.
$ pkcs11-tool --module p11nethsm.so --write-object secret.key --type privkey --label myFirstKey
Verejný kľúč dvojice kľúčov možno zapísať takto.
$ pkcs11-tool --module p11nethsm.so --write-object public.key --type pubkey --label myFirstKey
Certifikát páru kľúčov možno zapísať takto.
$ pkcs11-tool --module p11nethsm.so --write-object cert.pub --type cert --label myFirstKey
Kľúčové operácie#
Šifrovanie#
NetHSM nemôže šifrovať údaje asymetrickými kľúčmi, ale poskytuje verejný kľúč, ktorý možno použiť na šifrovanie. Viac informácií o tom, ako načítať verejný kľúč, nájdete v kapitole Show Key Details (Zobraziť podrobnosti o kľúči) alebo načítajte kľúč podľa popisu v kapitole Read Keys (Čítanie kľúčov) <pkcs11_with_pkcs11.html#read-keys>. Príklad predpokladá verejný kľúč v súbore public.pem.
Údaje možno šifrovať pomocou OpenSSL takto.
$ echo 'NetHSM rulez!' | openssl pkeyutl -encrypt -pubin \
-inkey public.pem \
-pkeyopt rsa_padding_mode:oaep \
-pkeyopt rsa_oaep_md:sha512 \
-pkeyopt rsa_mgf1_md:sha512 \
-out encrypted.data
Dešifrovanie#
Zariadenie NetHSM môže dešifrovať údaje pre súkromný kľúč uložený v úložisku kľúčov ** v zariadení NetHSM. V tomto príklade je použitá zašifrovaná správa z predchádzajúcej kapitoly Šifrovanie.
$ pkcs11-tool --module p11nethsm.so --decrypt \
--mechanism RSA-PKCS-OAEP \
--input-file encrypted.data \
--label myFirstKey \
--hash-algorithm SHA512
NetHSM rulez!
Podpísať#
NetHSM môže podpisovať údaje pre súkromný kľúč uložený v Úložisku kľúčov v NetHSM. Pre podpisy s kľúčom RSA a ECDSA sa musí najprv vypočítať digest.
Na výpočet digestu sú najprv potrebné údaje. Správa sa vytvorí takto.
$ echo 'NetHSM rulez!' | pkcs11-tool --module p11nethsm.so \
--sign \
--mechanism SHA512-RSA-PKCS-PSS \
--output-file sig.data \
--label myFirstKey
Vytvorený podpis možno overiť pomocou OpenSSL takto.
$ echo 'NetHSM rulez!' | openssl dgst -keyform PEM \
-verify public.pem \
-sha512 \
-sigopt rsa_padding_mode:pss \
-sigopt rsa_pss_saltlen:-1 \
-signature sig.data