Categorygithub.com/DNSSEC-Provisioning/multi-signer-controller
modulepackage
0.0.0-20211027081822-e179096e5fcc
Repository: https://github.com/dnssec-provisioning/multi-signer-controller.git
Documentation: pkg.go.dev

# README

multi-signer-controller

Control of a DNSSEC multi-signer group

Configuration

All configuration option values are either a string or an array of string.

Current list of configuration options:

  • groups: An array of all multi-signer groups as FQDNs
  • signers:<fqdn>: An array of all signer names in a group.
  • signer:<name>: The <host|ip>:port of the authority name-server of a signer.
  • signer-group:<name>: The FQDN of the group a signer is part of.
  • signer-type:<name>: The type of Updater to use for the signer, default nsupdate.
  • signer-ns:<name>: The FQDN of the NS for a signer.
  • signer-tsigkey:<name>: The name of the TSIG key to use.
  • signer-desec:<name>: The name of the deSEC.io token to use.
  • signer-leaving:<name>: Exists if the signer is leaving the group.
  • parent:<fqdn>: The <host|ip>:port of the parent of a group.
  • group-ttl:<fqdn>: The TTL to use when creating new resource records for a group.
  • group-dnskeys-synced:<fqdn>: Exists if the DNSKEYs are synced within a group.
  • group-cdscdnskeys-synced:<fqdn>: Exists if the CDS/CDNSKEYs are synced within a group.
  • group-nses-synced:<fqdn>: Exists if the NSes are synced within a group.
  • group-parent-ds-synced:<fqdn>: Exists if the parent's DS is in sync with the group.
  • group-parent-ns-synced:<fqdn>: Exists if the parent's NS is in sync with the group.
  • group-wait-ds:<fqdn>: An RFC3399 date that exists if the group is waiting for DS records to propagate.
  • group-wait-ns:<fqdn>: An RFC3399 date that exists if the group is waiting for NS records to propagate.
  • automate-stage:<fqdn>: The current stage of the automation.
  • automate-error:<fqdn>: Exists if the automation ran into an error, if so it contains the string of an error.
  • dnskey-origin:<dnskey>: Set during sync when new DNSKEYs are detected, will contain the signer it was seen in.
  • ns-origin:<ns fqdn>: Set during sync when new NSes are detected, will contain the signer it was seen in.
  • tsigkey-<name>: The secret of a TSIG key.
  • desectoken-<name>: The secret of a deSEC.io token.
  • debug-updater: Set to yes to enable debug output of updaters.

Updaters

To update the signers there are different kinds of updaters, using the Updater interface.

Available updaters:

  • nsupdate: Uses dynamic updates to change zone information, requires a valid TSIG key to be configured.
  • desec: Uses deSEC.io API, not implemented yet.

Automation Stages

Following automation stages exists.

  • ready: The group is ready for to receive changes.

  • manual: Can be used to mark a group as manually changed.

  • error: The automation encountered an error, see command automate-error.

  • join-sync-dnskeys: A new signer has joined and the DNSKEYs needs to be synced.

  • join-dnskeys-synced: Check that the DNSKEYs are in sync.

  • join-sync-cdscdnskeys: The CDS/CDNSKEYs needs to be created/synced.

  • join-cdscdnskeys-synced: Check that the CDS/CDNSKEYs are in sync.

  • join-parent-ds-synced: Check that the parent's DS are in sync.

  • join-remove-cdscdnskeys: Remove CDS/CDNSKEYs.

  • join-wait-ds: Wait for DS to propagate.

  • join-sync-nses: The NSes needs to be created/synced.

  • join-nses-synced: Check that the NSes are in sync.

  • join-add-csync: Add CSYNC.

  • join-parent-ns-synced: Check that the parent's NS are in sync.

  • join-remove-csync: Remove CSYNC.

  • leave-sync-nses: A signer is leaving and the NSes needs to be synced.

  • leave-nses-synced: Check that the NSes are in sync.

  • leave-add-csync: Add CSYNC.

  • leave-parent-ns-synced: Check that the parent's NS are in sync.

  • leave-remove-csync: Remove CSYNC.

  • leave-wait-ns: Wait for NS to propagate.

  • leave-sync-dnskeys: The DNSKEYs needs to be removed/synced.

  • leave-dnskeys-synced: Check that the DNSKEYs are in sync.

  • leave-sync-cdscdnskeys: The CDS/CDNSKEYs needs to be created/synced.

  • leave-cdscdnskeys-synced: Check that the CDS/CDNSKEYs are in sync.

  • leave-parent-ds-synced: Check that the parent's DS are in sync.

  • leave-remove-cdscdnskeys: Remove CDS/CDNSKEYs.

Runtime

multi-signer-controller requires -conf to be specified at runtime, you can see all runtime options by using -help.

Running a daemon

multi-signer-controller can be run as a daemon with daemon command, once started another multi-signer-controller can communicate with that daemon by using -remote.

When running as daemon you can also enable the web-based status interface by specifying a HTTP listening address and port using -http.

Commands

All commands help and required parameters can be view using the help command (without dash).

Example: How to run

See EXAMPLE.md.

local go

mkdir -p go/1.16.5; wget -O - https://storage.googleapis.com/golang/go1.16.5.linux-amd64.tar.gz | tar -C go/1.16.5 -zxv
export GOROOT="$HOME/go/1.16.5/go" GOPATH="$HOME/go"
export PATH="$PATH:$GOROOT/bin"

build

make
./multi-signer-controller

Known Issues

  • TSIG keys hardcoded to HMAC-SHA256
  • deSEC.io support not implemented yet

# Functions

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Constants

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Variables

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Interfaces

TODO: See if there is a better ways to give the insert/remove RRset Current implementation mimics dns.Insert()/.Remove() in the way that each entry in the first array is a call to these functions with the second array.

# Type aliases

No description provided by the author