PKCS#11 a pkcs11-tool segítségével#
Ez az útmutató a PKCS#11 illesztőprogram használatát írja le a NetHSM számára. Az útmutató a OpenSC eszközökkel dolgozik. Kérjük, olvassa el a dokumentációjukat, hogy megtudja, hogyan kell használni őket az Ön operációs rendszerén.
Fontos
Ez az illesztőprogram még mindig egy korai Proof of Concept megvalósítás, amely csak a TLS-kiszolgálók működtetéséhez szükséges funkciókat valósítja meg.
Telepítés#
Előre lefordított könyvtár telepítése#
Töltse le a legfrissebb kiadást tartalmazó archívumot a releases oldalról az adattárból. Használja azt a kiadási archívumot, amelynek címében szerepel az operációs rendszer neve.
A fájlokat a letöltött archívumból egy tetszőleges archiválóprogrammal kicsomagolhatja.
Másolja a kinyert könyvtárat az operációs rendszer megfelelő elérési útvonalára. Az útvonal az OpenSC telepítésétől és konfigurációjától függ.
Fordítás forráskódból#
Fontos
Ez az illesztőprogram csak a hivatalos Go fordítóval fordítható. Ne használja a GNU Go fordítót (GCC-Go). Kérjük, olvassa el a weboldalukat, hogy megtudja, hogyan kell telepíteni.
Töltse le a legfrissebb kiadást tartalmazó archívumot a releases oldalról az adattárból. Használja azt a kiadási archívumot, amelynek címében szerepel a Source code.
A fájlokat a letöltött archívumból egy tetszőleges archiválóprogrammal kicsomagolhatja.
A kinyert forráskódot tartalmazó könyvtárban a következő parancsot kell végrehajtani a könyvtár lefordításához.
./build.sh
./build.sh
Másolja a kinyert könyvtárat az operációs rendszer megfelelő elérési útvonalára. Az útvonal az OpenSC telepítésétől és konfigurációjától függ.
Konfiguráció#
A PKCS#11 illesztőprogram és a NetHSM közötti kapcsolat konfigurálásához szükséges az p11nethsm.conf konfigurációs fájl.
Egy példa konfigurációs fájl a következőképpen néz ki.
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"
Módosítsa a p11nethsm.conf konfigurációs fájlt a környezetének megfelelően.
A konfigurációs fájl több slotot is tartalmazhat, a slots tömbben. A slotok több NetHSM telepítést képviselnek. A slotok label mezőjének tartalmaznia kell egy egyedi nevet. Az url, user és password kulcsok kötelezőek. Biztonsági okokból ajánlott a jelszót egy környezeti változóban átadni. Ehhez a env:NETHSM_PASS kulcsban a password kulcsot kell átadni, ahol a NETHSM_PASS a jelszót tartalmazó környezeti változó neve. A certSHA256 kulcsot akkor kell beállítani, ha a TLS tanúsítványt nem az operációs rendszer tanúsítványtárolójában található tanúsítványkiadó (CA) írta alá.
A konfigurációs fájlt vagy a következő elérési utakra, vagy az alkalmazás futtatásának könyvtárába kell menteni.
$HOME/.nitrokey
/etc/nitrokey/
Kulcskezelés#
Info#
A cryptoki verziójára és a PKCS#11 illesztőprogramra vonatkozó információk megjelenítése.
$ 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)
Listanyílások listája#
A rendelkezésre álló résidőkre vonatkozó információk. A felsorolt slotok a p11nethsm.conf konfigurációs fájlban található slot tömb konfigurációjától függnek. A bővítőhelyek konfigurációjáról bővebben a Konfiguráció című fejezetben olvashat.
$ 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
Megjegyzés
Ha a konfigurációd egynél több slotot támogat, akkor lehet, hogy a pkcs11-tool parancsokban a –slot <arg> opciót kell hozzáadnod a megfelelő slot használatához.
Kulcs generálása#
Generáljon egy kulcspárt, és tárolja azt a NetHSM-en.
Megjegyzés
A PKCS#11 illesztőprogram jelenleg nem támogatja ezt a funkciót. A kulcspárokat a nitropy vagy egy REST API-kérelem segítségével lehet létrehozni. A kulcs generálásáról bővebben a Kulcs generálása fejezetben olvashat.
Kulcsok listája#
A NetHSM-en a Key Store címen található kulcsokról és tanúsítványokról szóló információk megjelenítése.
$ 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
Kulcsok olvasása#
Kulcsok és tanúsítványok olvasása a kulcstárolóról a NetHSM-en. A NetHSM-ről nem lehet privát kulcsokat olvasni.
Egy kulcspár nyilvános kulcsa a következőképpen olvasható.
$ pkcs11-tool --module p11nethsm.so --read-object --type pubkey --label myFirstKey -o public.key
A kulcspár tanúsítványa a következőképpen olvasható.
$ pkcs11-tool --module p11nethsm.so --read-object --type cert --label myFirstKey -o public.key
A visszaküldött tanúsítványok vagy nyilvános kulcsok ASN.1 kódolásúak. Az adatok dekódolhatók a dumpasn1 eszközzel, mivel DER formátumú adatokat tartalmaznak. A DER formátum az OpenSSL segítségével PEM formátumra konvertálható.
Kulcsok írása#
Kulcsok és tanúsítványok írása a kulcstárolóba a NetHSM-en.
A kulcspár privát kulcsa a következőképpen írható.
$ pkcs11-tool --module p11nethsm.so --write-object secret.key --type privkey --label myFirstKey
A kulcspár nyilvános kulcsa a következőképpen írható.
$ pkcs11-tool --module p11nethsm.so --write-object public.key --type pubkey --label myFirstKey
A kulcspár tanúsítványa a következőképpen írható.
$ pkcs11-tool --module p11nethsm.so --write-object cert.pub --type cert --label myFirstKey
Kulcsműveletek#
Titkosítás#
A NetHSM nem képes aszimmetrikus kulcsokkal titkosítani az adatokat, de biztosítja a titkosításhoz használható nyilvános kulcsot. Kérjük, olvassa el a A kulcs adatainak megjelenítése fejezetet, vagy kérje le a kulcsot a Kulcsok olvasása <pkcs11_with_pkcs11.html#read-keys> fejezetben leírtak szerint, hogy többet megtudjon a nyilvános kulcs lekérdezéséről. A példa feltételezi, hogy a nyilvános kulcs a public.pem fájlban található.
Az adatok az OpenSSL segítségével a következőképpen titkosíthatók.
$ 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
Dekódolás#
A NetHSM képes visszafejteni a NetHSM Key Store címén tárolt magánkulcs adatait. Ez a példa az előző fejezetben Encrypt titkosított üzenetét használja.
$ pkcs11-tool --module p11nethsm.so --decrypt \
--mechanism RSA-PKCS-OAEP \
--input-file encrypted.data \
--label myFirstKey \
--hash-algorithm SHA512
NetHSM rulez!
Jelentkezzen a címen.#
A NetHSM képes aláírni a NetHSM-en található Key Store-ban tárolt magánkulcshoz tartozó adatokat. Az RSA és ECDSA kulccsal történő aláíráshoz először egy digestet kell kiszámítani.
A digest kiszámításához először az adatokra van szükség. Az üzenet létrehozása a következőképpen történik.
$ echo 'NetHSM rulez!' | pkcs11-tool --module p11nethsm.so \
--sign \
--mechanism SHA512-RSA-PKCS-PSS \
--output-file sig.data \
--label myFirstKey
A létrehozott aláírás az OpenSSL segítségével a következőképpen ellenőrizhető.
$ echo 'NetHSM rulez!' | openssl dgst -keyform PEM \
-verify public.pem \
-sha512 \
-sigopt rsa_padding_mode:pss \
-sigopt rsa_pss_saltlen:-1 \
-signature sig.data