pkcs11-työkalu¶
pkcs11-tool on OpenSC -projektiin kuuluva työkalu, jota voidaan käyttää PKCS#11-laitteen avainten hallintaan.
Sinun on ilmoitettava käytettävän PKCS#11-moduulin sijainti --module
-vaihtoehdon kanssa:
pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so
Korvaa /usr/lib/nitrokey/libnethsm_pkcs11.so
polulla, jossa NetHSM PKCS#11 -moduuli sijaitsee.
Voit testata, toimiiko moduuli seuraavalla komennolla:
pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so --show-info
Sinun pitäisi nähdä jotain tällaista:
Cryptoki version 2.40
Manufacturer Nitrokey
Library Nitrokey PKCS#11 library (ver 0.1)
Luettelo peliautomaateista¶
Tiedot käytettävissä olevista lähtö- ja saapumisajoista. Luetellut lähtö- ja saapumisajat riippuvat lähtö- ja saapumisaikataulurivin määrityksestä p11nethsm.conf-kokoonpanotiedostossa. Lisätietoja lähtö- ja saapumisaikojen konfiguroinnista on luvussa Konfigurointi.
pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so --list-slots
Slot 0 (0x0): NetHSM
token label : LocalHSM
token manufacturer : Nitrokey GmbH
token model : NetHSM
token flags : rng, token initialized, PIN initialized
hardware version : 0.1
firmware version : 0.1
serial num : unknown
pin min/max : 0/0
Muista
Jos kokoonpanosi tukee useampaa kuin yhtä korttipaikkaa, sinun on ehkä lisättävä --slot <arg>
-vaihtoehto pkcs11-tool-komentoihin, jotta voit käyttää oikeaa korttipaikkaa.
Avaintunnukset¶
pkcs11-tool käyttää avainten tunnistamiseen heksadesimaalista avaintunnusta. NetHSM käyttää aakkosnumeerisia merkkijonoja avaintunnisteena. NetHSM:n PKCS#11-moduuli käyttää merkkijonon raakabyte-arvoja PKCS#11-tunnuksen muodostamiseen. NetHSM-avaimen heksadesimaaliversion saat osoitteesta xxd
:
echo -n "MyKey" | xxd -p
4d794b6579
Voit sitten antaa tämän heksanarvon pkcs11-toolille --id
-vaihtoehdolla.
Luo avain¶
Luo avainparin ja tallenna se NetHSM:ään.
Muista
Aukkoon, jota haluat käyttää, on määritelmätiedostossa oltava andministrator-käyttäjä. Muuten saat virheilmoituksen CKR_USER_NOT_LOGGED_IN.
RSA¶
pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so --keypairgen --key-type rsa:2048 --label "rsakey"
ECDSA¶
pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so --keypairgen --key-type EC:prime256v1 --label "eckey"
AES/Generic¶
pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so --keygen --key-type AES:256 --label "aeskey"
Luetteloavaimet¶
Luettelo NetHSM:ään tallennetuista avaimista.
pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so --list-objects
Using slot 0 with a present token (0x0)
Public Key Object; RSA 2048 bits
label: rsakey
ID: 7273616b6579
Usage: none
Access: none
Private Key Object; RSA
label: rsakey
ID: 7273616b6579
Usage: decrypt, sign
Access: sensitive, always sensitive, never extractable
Lue avaimet¶
Lue NetHSM:ään tallennetun avainparin julkinen avain. NetHSM:stä ei voi lukea yksityisiä avaimia.
pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so --read-object --type pubkey --label rsakey --output-file rsakey.pub
Avainparin varmenne voidaan lukea samalla komennolla vaihtamalla --type
-vaihtoehto cert
-vaihtoehdoksi.
Muista
Tuloste on DER-muodossa.
Kirjoita näppäimet¶
Kirjoita yksityinen avain NetHSM:ään. Julkinen avain johdetaan automaattisesti yksityisestä avaimesta.
pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so --write-object rsakey.key --type privkey --id 7273616b6579
Avainparin varmenne voidaan kirjoittaa samalla komennolla vaihtamalla --type
-vaihtoehto cert
-vaihtoehdoksi.
pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so --write-object rsakey.crt --type cert --id 7273616b6579
Salaa¶
Tietojen salausta tuetaan vain AES-avaimilla.
echo "NetHSM rulez! " | pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so --encrypt --id 6165736b6579 --mechanism AES_CBC --output-file encrypted.txt
Muista
Sinun on täytettävä syöttötiedot manuaalisesti AES-avaimen lohkokoon mukaan.
Purkakaa salaus¶
AES¶
pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so --decrypt --id 6165736b6579 --mechanism AES_CBC --input-file encrypted.txt
RSA¶
Voit salata tiedot julkisella avaimella ja purkaa ne yksityisellä avaimella.
# get the public key first
pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so --read-object --type pubkey --id 7273616b6579 --output-file public.der
# encrypt some data with OpenSSL
echo 'NetHSM rulez!NetHSM rulez!' | openssl pkeyutl -encrypt -pubin -inkey public.der -keyform DER -out data.crypt
pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so --decrypt --id 7273616b6579 --mechanism RSA-PKCS --input-file data.crypt
Kirjaudu¶
echo "NetHSM rulez!" | openssl dgst -sha256 -binary | pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so --sign --label rsakey --mechanism RSA-PKCS-PSS --hash-algorithm SHA256 --output-file data.sig --signature-format openssl
Voit tarkistaa allekirjoituksen OpenSSL:llä:
# get the public key
pkcs11-tool --module /usr/lib/nitrokey/libnethsm_pkcs11.so --read-object --type pubkey --label rsakey --output-file public.der
echo 'NetHSM rulez!' | openssl dgst -keyform DER -verify public.der -sha256 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -signature data.sig