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#

  1. 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.

  2. A fájlokat a letöltött archívumból egy tetszőleges archiválóprogrammal kicsomagolhatja.

  3. 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.

  1. 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.

  2. A fájlokat a letöltött archívumból egy tetszőleges archiválóprogrammal kicsomagolhatja.

  3. 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
    
  4. 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