DNS för knutar

Knot DNS is an open source authoritative DNS server that can be used for DNSSEC. To use Knot DNS with the NetHSM please install and configure the PKCS#11 module as described here.

Manuellt läge

I manuellt läge måste nycklarna genereras och hanteras manuellt.

Endast Operator-användaren behövs i konfigurationsfilen för PKCS#11-modulen. Lösenordet kan anges med hjälp av pin-value i PKCS#11 URI i knot.conf.

Lägg till följande rader i konfigurationsfilen för Knot DNS /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

Värdet token i PKCS#11 URI är label från p11nethsm.conf. Justera sökvägen till libnethsm_pkcs11.so efter behov.

Kör följande kommandon för att generera nycklarna:

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"

Automatiskt läge

I automatiskt läge genereras nycklarna av Knot DNS och lagras i NetHSM.

En administratörs- och en operatörsanvändare behövs i PKCS#11-modulkonfigurationen.

Lägg till följande rader i konfigurationsfilen för Knot DNS /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

Att ställa in key-label till on ` ändrar ingenting och pkcs11-modulen ignorerar den angivna etiketten och returnerar alltid det hexadecimala nyckel-ID:t som etikett. Policyn använder mycket korta nyckellivstider och TTL:er för teständamål.