Възел DNS#

Knot DNS е авторитетен DNS сървър с отворен код, който може да се използва за DNSSEC. За да използвате KnotDNS с NetHSM, моля, инсталирайте и конфигурирайте модула PKCS#11, както е описано тук ` <./pkcs11-setup.html>`__.

Ръчен режим#

В ръчен режим ключовете трябва да се генерират и управляват ръчно.

В конфигурационния файл на модула PKCS#11 е необходим само потребителят Operator. Паролата може да бъде зададена с помощта на 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 за целите на тестването.