Nœud DNS#
Knot DNS est un serveur DNS autoritaire open source qui peut être utilisé pour le DNSSEC. Pour utiliser KnotDNS avec le NetHSM, veuillez installer et configurer le module PKCS#11 comme décrit ici.
Mode manuel#
En mode manuel, les clés doivent être générées et gérées manuellement.
Seul l’utilisateur Operator est nécessaire dans le fichier de configuration du module PKCS#11. Le mot de passe peut être spécifié à l’aide de pin-value
dans PKCS#11 URI dans knot.conf.
Ajoutez les lignes suivantes au fichier de configuration de 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
La valeur token
dans l’URI PKCS#11 est la valeur label
de p11nethsm.conf
. Ajustez le chemin d’accès à libnethsm_pkcs11.so
si nécessaire.
Pour générer les clés, exécutez les commandes suivantes :
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"
Mode automatique#
En mode automatique, les clés sont générées par Knot DNS et stockées dans le NetHSM.
Un administrateur et un opérateur sont nécessaires dans la configuration du module PKCS#11.
Ajoutez les lignes suivantes au fichier de configuration DNS du nœud /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
Définir key-label
à on
ne change rien et le module pkcs11 ignore l’étiquette donnée et renvoie toujours l’identifiant hexadécimal de la clé en tant qu’étiquette. La politique utilise des durées de vie des clés et des TTL très courtes à des fins de test.