ods-enforcer(8)
π ods-enforcer(8) π
okay bestie, gather round π«Ά this is ods-enforcer, aka the OpenDNSSEC enforcer Engine client. the manual name is right there in the header, we been knew, but like β say it with me one more time for the people in the back: ods-enforcer, OpenDNSSEC's very own enforcer Engine client. iconic. let's get into it π
β¨ NAME β¨
ods-enforcer β OpenDNSSEC enforcer Engine client. that's the whole vibe. π
πΈ SYNOPSIS πΈ
bestie the command shapes are literally these, don't freestyle them:
ods-enforcer help | start | stop | reload | running
ods-enforcer queue | flush | signconf | enforce | verbosity <number>
ods-enforcer update conf | repositorylist | all
ods-enforcer policy list | export | import | purge | resalt
ods-enforcer zone list | add | delete | set-policy
ods-enforcer zonelist export | import
ods-enforcer key list | export | import | ds-submit | ds-seen | ds-retract | ds-gone | generate | purge | rollover
ods-enforcer backup list | prepare | commit | rollback
ods-enforcer rollover list
ods-enforcer repository list
ods-enforcer help [COMMAND]
π¦ DESCRIPTION π¦
so ods-enforcer is part of the OpenDNSSEC software, periodt. with this lil tool you can send commands to the enforcer engine daemon β yes she talks to the daemon, she's connected like that π
ods-enforcer manages the operation of the KASP Enforcer, which is the part of OpenDNSSEC that triggers key generation and signing operations on domains based on policies with user-defined timing and security requirements. she's giving main character energy in the DNSSEC world, lowkey.
among the functions of ods-enforcer are key management, import to the zone list, and manually rolling keys to recover from exceptional situations like key loss. so when things go feral, she's the one you call πͺ the following sections discuss the subcommands.
want more? go to http://www.opendnssec.org and visit the Documentation page. bookmarked, obviously. π
π GENERIC OPTIONS π
the basics, the essentials, the starter pack:
helpβ Show a brief list of commands. your little map, bestie πΊοΈstartβ Start the engine and the process. wake her up π€β‘οΈπ₯stopβ Stop the engine and terminate the process. night night π΄reloadβ Reload the engine. refresh, not restart, we love that for her π§runningβ Return acknowledgment that the engine is running. she's alive and she's serving πverbosityβ Set verbosity to the given number. how much she talks. choose wisely π£οΈ
β° SCHEDULING OPTIONS β°
queueβqueueshows all scheduled tasks with their time of the earliest executions, as well as all tasks currently being processed. the whole to-do list, the whole group chat, everything β¨flushβ Execute all scheduled tasks immediately. no waiting, no patience, we do it NOW π₯enforceβ Force the enforcer to run once for every zone. every single one. no zone left behind π«Ά
π SIGNCONF AND UPDATE SUBCOMMANDS π
signconfβ Force write of signer configuration files for all zones. write it, don't argue πupdate confβ Update the configuration fromconf.xmland reload the enforcer.update repository listβ List repositories.update allβ Perform policy import, zonelist import, and update repository list. the deluxe combo, she ate π½οΈ
π POLICY ADMINISTRATION SUBCOMMNADS π
(yes the section header really is spelled like that in the original, we're keeping it, no notes π)
policy listβ List all policies in the database.policy export (--policy <policy> | --all)β Export a specified policy or all of them from the database.policy importβ Import policies fromkasp.xmlinto the enforcer database.policy purgeβ This command will remove any policies from the database which have no associated zones. Use with caution. β οΈ like fr fr, be careful, she's got scissors βοΈpolicy resaltβ Generate new NSEC3 salts for policies that have salts older than the resalt duration. fresh salt, fresh start π§β¨
π ZONE MANAGEMENT SUBCOMMANDS π
zone listβ List all zones currently in the database.zone add --zone <zone> [--policy <policy>] [--signerconf <path>] [--in-type <type>] [--input <path>] [--out-type <type>] [--output <path>] [--xml] [--suspend]β Add a new zone to the enforcer database. new zone, who dis πzone delete (--zone <zone> | --all [--xml])β Delete a zone or all of zones from the enforcer database.zone set-policy --zone <zone> --policy <policy> [--xml]β Change the policy for a zone in the enforcer database. glow-up via policy swap πzonelist exportβ Export list of zones from the database to thezonelist.xmlfile.zonelist import [--remove-missing-zones] [--file <absolute path>]β Import zones fromzonelist.xmlinto the enforcer database.
π KEY MANAGEMENT SUBCOMMANDS π
this is the section, bestie. keys. the whole point. let's go π₯
key list [--verbose] [--debug] [--full] [--parsable] [--zone] [--keystate] [--all]β List information about keys in all zones, or in a particular zone from the database.key export (--zone <zone> | --all) [--keystate <state>] [--keytype <type>] [--ds]β Export DNSKEY(s) for a given zone/all from the database.key import --cka_id <CKA_ID> --repository <repository> --zone <zone> --bits <size> --algorithm <algorithm> --keystate <state> --keytype <type> --inception_time <time>β Add a key which was created outside of the OpenDNSSEC code into the enforcer database. outsider key, welcome to the family π«key ds-submit --zone <zone> (--keytag <keytag> | --cka_id <CKA_ID>)β Issue ads-submitto the enforcer for a KSK.key ds-seen --zone <zone> (--keytag <keytag> | --cka_id <CKA_ID>)β Issue ads-seento the enforcer for a KSK.key ds-seen --allβ Issue ads-seenfor all ready (fords-seen) KSKs. This command indicates to OpenDNSSEC that a submitted DS record has appeared in the parent zone, and thereby trigger the completion of a KSK rollover. the parent zone finally posted the DS, we love closure π₯Ήkey ds-retract --zone <zone> (--keytag <keytag> | --cka_id <CKA_ID>)β Issue ads-retractto the enforcer for a KSK.key ds-gone --zone <zone> (--keytag <keytag> | --cka_id <CKA_ID>)β Issue ads-goneto the enforcer for a KSK.key generate --duration <duration> (--policy <policy> | --all)β Pre-generate keys for all or a given policy, the duration to pre-generate for can be specified or otherwise its taken from theconf.xml. manifesting keys before you even need them β¨key purge (--policy <policy> | --zone <zone> | --delete)β This command will remove keys from the database and HSM that are dead. If the--delete(or-d) flag is given, the keys are also purged from the HSM. Keys are always purged from the HSM if the<Purge>(and yeah, the original page literally just trails off right there π not my typo, I'm just the messenger)key rollover (--zone <zone> | --policy <policy>) [--keytype <keytype> | --all]β Start a key rollover of the desired type *now* or all of them. The process is the same as for the scheduled automated rollovers however it does not wait for the keys lifetime to expire before rolling. The next rollover is due after the newest key aged passed its lifetime. not me forcing a rollover at 3am because I can πrollover list [--zone <zone>]β List the expected dates and times of upcoming rollovers. This can be used to get an idea of upcoming works. a lil calendar of future chaos ποΈ
π§ REPOSITORY AND BACKUP SUBCOMMANDS π§
backup list --repository <repository>β Enumerate backup status of keys.backup prepare --repository <repository>β Flag the keys found in all configured HSMs as to be backed up.backup commit --repository <repository>β Mark flagged keys found in all configured HSMs as backed up.backup rollback --repository <repository>β (that's it, that's the whole entry, she's mysterious like that π)repository listβ List repositories.
π FILES π
the sacred texts:
/etc/opendnssec/conf.xmlβ The main configuration file for OpenDNSSEC./etc/opendnssec/zonelist.xmlβ The list of zones as defined inconf.xml. This list is used during 'zonelist import'./etc/opendnssec/kasp.xmlβ The configuration of policies that define timing and security, as defined inconf.xml./var/opendnssec/unsigned/β The location that is usually configured inconf.xmlwhich contains unsigned zones./var/opendnssec/signed/β The location that is usually configured inconf.xmlwhich contains signed zones.
π©Ί DIAGNOSTICS π©Ί
will log all the problems via stderr. she's not gonna keep it to herself, and honestly? valid. π’
π SEE ALSO π
go read the whole squad: ods-control(8), ods-enforcerd(8), ods-signerd(8), ods-signer(8), ods-kasp(5), ods-kaspcheck(1), ods-timing(5), ods-hsmspeed(1), ods-hsmutil(1), opendnssec(7), and http://www.opendnssec.org/. iykyk π
π« AUTHORS π«
ods-enforcer was written by NLnet Labs as part of the OpenDNSSEC project. shoutout, they ate and left no crumbs π«Ά
and that's the whole page, bestie!! this came to you from OpenDNSSEC, dated April 2016 β vintage but still slaying β¨ stay caffeinated, back up your keys, and don't run policy purge unless you're ready for it π
π
π¦ where this page comes from
- centos-stream 10: opendnssec 2.1.14-1.el10 Β· BSD-2-Clause
- centos-stream 9: opendnssec 2.1.10-4.el9 Β· BSD
- fedora 43: opendnssec 2.1.14-2.fc43 Β· BSD-2-Clause
- fedora 44: opendnssec 2.1.14-3.fc44 Β· BSD-2-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms