Κόμπος DNS

Knot DNS είναι ένας ανοικτού κώδικα εξουσιοδοτικός διακομιστής DNS που μπορεί να χρησιμοποιηθεί για DNSSEC. Για να χρησιμοποιήσετε το KnotDNS με το NetHSM, εγκαταστήστε και ρυθμίστε την ενότητα PKCS#11 όπως περιγράφεται εδώ.

Χειροκίνητη λειτουργία

Στη χειροκίνητη λειτουργία τα κλειδιά πρέπει να δημιουργούνται και να διαχειρίζονται χειροκίνητα.

Μόνο ο χρήστης Operator απαιτείται στο αρχείο ρυθμίσεων της ενότητας PKCS#11. Ο κωδικός πρόσβασης μπορεί να καθοριστεί χρησιμοποιώντας το pin-value στο PKCS#11 URI στο knot.conf.

Προσθέστε τις ακόλουθες γραμμές στο αρχείο ρυθμίσεων KnotDNS /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

Η τιμή token στο PKCS#11 URI είναι η label από την p11nethsm.conf. Προσαρμόστε τη διαδρομή προς το libnethsm_pkcs11.so ανάλογα με τις ανάγκες.

Για να δημιουργήσετε τα κλειδιά εκτελέστε τις ακόλουθες εντολές:

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"

Αυτόματη λειτουργία

Στην αυτόματη λειτουργία τα κλειδιά παράγονται από το Knot DNS και αποθηκεύονται στο NetHSM.

Στη διαμόρφωση της ενότητας PKCS#11 απαιτείται ένας χρήστης διαχειριστής και ένας χρήστης χειριστής.

Προσθέστε τις ακόλουθες γραμμές στο αρχείο ρυθμίσεων 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

Ο καθορισμός key-label σε on δεν αλλάζει τίποτα και η ενότητα pkcs11 αγνοεί τη δεδομένη ετικέτα και επιστρέφει πάντα το δεκαεξαδικό αναγνωριστικό κλειδιού ως ετικέτα. Η πολιτική χρησιμοποιεί πολύ μικρούς χρόνους ζωής κλειδιών και TTL για σκοπούς δοκιμών.