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.