Vozel DNS#

Knot DNS je odprtokodni avtoritativni strežnik DNS, ki se lahko uporablja za DNSSEC. Če želite uporabljati KnotDNS z NetHSM, namestite in konfigurirajte modul PKCS#11, kot je opisano tukaj ` <./pkcs11-setup.html>`__.

Ročni način#

V ročnem načinu je treba ključe ustvariti in upravljati ročno.

V konfiguracijski datoteki modula PKCS#11 je potreben samo uporabnik Operator. Geslo lahko določite z uporabo pin-value v PKCS#11 URI v knot.conf.

V konfiguracijsko datoteko KnotDNS /etc/knot/knot.conf dodajte naslednje vrstice:

keystore:
  - id: nethsm_keystore
    backend: pkcs11
    config: "pkcs11:token=localnethsm /usr/local/lib/libnethsm_pkcs11.so"

policy:
  - id: manual_policy
    keystore: nethsm_keystore
    manual: on

zone:
  - domain: example.com
    storage: "/var/lib/knot"
    file: "example.com.zone"
    dnssec-signing: on
    dnssec-policy: manual_policy

Vrednost token v PKCS#11 URI je label iz p11nethsm.conf. Po potrebi prilagodite pot do libnethsm_pkcs11.so.

Za ustvarjanje ključev zaženite naslednje ukaze:

nitropy nethsm \
  --host "localhost:8443" --no-verify-tls \
  --username "admin" \
  generate-key \
    --type "EC_P256" --mechanism "ECDSA_Signature" --length "256" --key-id "myKSK"
# knot's keymgr expects the binary key id in hex format
# myKSK in ascii-binary is 0x6d794b534b, e.g. echo -n "myKSK" | xxd -ps
keymgr "example.com" import-pkcs11 "6d794b534b" "algorithm=ECDSAP256SHA256" "ksk=yes"

nitropy nethsm \
  --host "localhost:8443" --no-verify-tls \
  --username "admin" \
  generate-key \
    --type "EC_P256" --mechanism "ECDSA_Signature" --length "256" --key-id "myZSK"
# myZSK in ascii-binary is 0x6d795a534b
keymgr "example.com" import-pkcs11 "6d795a534b" "algorithm=ECDSAP256SHA256"

Samodejni način#

V samodejnem načinu ključe ustvari sistem Knot DNS in jih shrani v sistem NetHSM.

V konfiguraciji modula PKCS#11 sta potrebna uporabnika Administrator in Operator.

V konfiguracijsko datoteko Knot DNS /etc/knot/knot.conf dodajte naslednje vrstice:

keystore:
  - id: nethsm_keystore
    backend: pkcs11
    config: "pkcs11:token=localnethsm /usr/local/lib/libnethsm_pkcs11.so"
    #key-label: on

policy:
  - id: auto_policy
    keystore: nethsm_keystore
    ksk-lifetime: 5m
    zsk-lifetime: 2m
    dnskey-ttl: 10s
    zone-max-ttl: 15s
    propagation-delay: 2s

zone:
  - domain: example.com
    storage: "/var/lib/knot"
    file: "example.com.zone"
    dnssec-signing: on
    dnssec-policy: auto_policy

Nastavitev key-label na on ne spremeni ničesar in modul pkcs11 ne upošteva podane oznake ter kot oznako vedno vrne šestnajstiški id ključa. Politika uporablja zelo kratke življenjske dobe ključev in TTL za namene testiranja.