Knoten DNS#
Knot DNS ist ein quelloffener autoritativer DNS-Server, der für DNSSEC verwendet werden kann. Um KnotDNS mit dem NetHSM zu verwenden, installieren und konfigurieren Sie bitte das PKCS#11-Modul wie hier beschrieben.
Manueller Modus#
Im manuellen Modus müssen die Schlüssel manuell erzeugt und verwaltet werden.
In der Konfigurationsdatei des PKCS#11-Moduls wird nur der Benutzer Operator benötigt. Das Passwort kann mit pin-value
in der PKCS#11 URI in knot.conf angegeben werden.
Fügen Sie die folgenden Zeilen in die KnotDNS-Konfigurationsdatei /etc/knot/knot.conf
ein:
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
Der token
Wert im PKCS#11 URI ist der label
vom p11nethsm.conf
. Passen Sie den Pfad zu libnethsm_pkcs11.so
nach Bedarf an.
Führen Sie die folgenden Befehle aus, um die Schlüssel zu erzeugen:
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"
Automatischer Modus#
Im automatischen Modus werden die Schlüssel von Knot DNS generiert und in der NetHSM gespeichert.
Für die Konfiguration des PKCS#11-Moduls werden ein Administrator und ein Operator-Benutzer benötigt.
Fügen Sie die folgenden Zeilen in die Knot-DNS-Konfigurationsdatei /etc/knot/knot.conf
ein:
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
Das Einstellen von key-label
auf on
ändert nichts und das pkcs11-Modul ignoriert das angegebene Label und gibt immer die hexadezimale Schlüssel-ID als Label zurück. Die Richtlinie verwendet sehr kurze Schlüssel-Lebensdauern und TTLs zu Testzwecken.