Knoop DNS#

Knot DNS is een open source gezaghebbende DNS-server die kan worden gebruikt voor DNSSEC. Om KnotDNS te gebruiken met de NetHSM moet de PKCS#11 module geïnstalleerd en geconfigureerd worden zoals hier beschreven.

Handmatige modus#

In handmatige modus moeten de sleutels handmatig worden gegenereerd en beheerd.

Alleen de Operator gebruiker is nodig in het configuratiebestand van de PKCS#11 module. Het wachtwoord kan worden opgegeven met de pin-value in de PKCS#11 URI in knot.conf.

Voeg de volgende regels toe aan het KnotDNS configuratiebestand /etc/knot/knot.conf:

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

De token waarde in de PKCS#11 URI is de label van de p11nethsm.conf. Pas het pad naar de libnethsm_pkcs11.so aan als dat nodig is.

Voer de volgende commando’s uit om de sleutels te genereren:

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"

Automatische modus#

In automatische modus worden de sleutels gegenereerd door Knot DNS en opgeslagen in de NetHSM.

Een Administrator en een Operator gebruiker zijn nodig in de PKCS#11 moduleconfiguratie.

Voeg de volgende regels toe aan het Knot DNS configuratiebestand /etc/knot/knot.conf:

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

Het instellen van key-label op on verandert niets en de pkcs11 module negeert het gegeven label en retourneert altijd het hexadecimale sleutel id als label. Het beleid gebruikt zeer korte sleuteltijden en TTL’s voor testdoeleinden.