mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-01 15:05:23 +00:00
Fix formatting of "dnssec-policy" documentation
This commit is contained in:
@@ -4764,235 +4764,200 @@ can be found, the initializing key is also compiled directly into
|
|||||||
|
|
||||||
.. _dnssec_policy_grammar:
|
.. _dnssec_policy_grammar:
|
||||||
|
|
||||||
|
``dnssec-policy`` Statement Grammar
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
.. include:: ../misc/dnssec-policy.grammar.rst
|
.. include:: ../misc/dnssec-policy.grammar.rst
|
||||||
|
|
||||||
.. _dnssec_policy:
|
.. _dnssec_policy:
|
||||||
|
|
||||||
The ``dnssec-policy`` statement defines a key and
|
``dnssec-policy`` Statement Definition and Usage
|
||||||
signing policy (KASP) for zones.
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
A KASP determines how one or more zones are signed
|
The ``dnssec-policy`` statement defines a key and signing policy (KASP)
|
||||||
with DNSSEC. For example, it specifies how often keys should
|
for zones.
|
||||||
roll, which cryptographic algorithms to use, and how often RRSIG
|
|
||||||
records need to be refreshed.
|
|
||||||
|
|
||||||
Keys are not shared among zones, which means that one set of keys
|
A KASP determines how one or more zones are signed with DNSSEC. For
|
||||||
per zone is generated even if they have the same policy.
|
example, it specifies how often keys should roll, which cryptographic
|
||||||
If multiple views are configured with different versions of the
|
algorithms to use, and how often RRSIG records need to be refreshed.
|
||||||
same zone, each separate version uses the same set of signing
|
|
||||||
keys.
|
|
||||||
|
|
||||||
Multiple key and signing policies can be configured. To
|
Keys are not shared among zones, which means that one set of keys per
|
||||||
attach a policy to a zone, add a ``dnssec-policy``
|
zone is generated even if they have the same policy. If multiple views
|
||||||
option to the ``zone`` statement, specifying the
|
are configured with different versions of the same zone, each separate
|
||||||
name of the policy that should be used.
|
version uses the same set of signing keys.
|
||||||
|
|
||||||
Key rollover timing is computed for each key according to
|
Multiple key and signing policies can be configured. To attach a policy
|
||||||
the key lifetime defined in the KASP. The lifetime may be
|
to a zone, add a ``dnssec-policy`` option to the ``zone`` statement,
|
||||||
modified by zone TTLs and propagation delays, to
|
specifying the name of the policy that should be used.
|
||||||
prevent validation failures. When a key reaches the end of its
|
|
||||||
lifetime,
|
|
||||||
``named`` generates and publishes a new key
|
|
||||||
automatically, then deactivates the old key and activates the
|
|
||||||
new one; finally, the old key is retired according to a computed
|
|
||||||
schedule.
|
|
||||||
|
|
||||||
Zone-signing key (ZSK) rollovers require no operator input.
|
Key rollover timing is computed for each key according to the key
|
||||||
Key-signing key (KSK) and combined-signing key (CSK) rollovers
|
lifetime defined in the KASP. The lifetime may be modified by zone TTLs
|
||||||
require action to be taken to submit a DS record to the parent.
|
and propagation delays, to prevent validation failures. When a key
|
||||||
Rollover timing for KSKs and CSKs is adjusted to take into account
|
reaches the end of its lifetime, ``named`` generates and publishes a new
|
||||||
delays in processing and propagating DS updates.
|
key automatically, then deactivates the old key and activates the new
|
||||||
|
one; finally, the old key is retired according to a computed schedule.
|
||||||
|
|
||||||
There are two predefined ``dnssec-policy`` names:
|
Zone-signing key (ZSK) rollovers require no operator input. Key-signing
|
||||||
``none`` and ``default``.
|
key (KSK) and combined-signing key (CSK) rollovers require action to be
|
||||||
Setting a zone's policy to
|
taken to submit a DS record to the parent. Rollover timing for KSKs and
|
||||||
``none`` is the same as not setting
|
CSKs is adjusted to take into account delays in processing and
|
||||||
``dnssec-policy`` at all; the zone is not
|
propagating DS updates.
|
||||||
signed. Policy ``default`` causes the
|
|
||||||
zone to be signed with a single combined-signing key (CSK)
|
|
||||||
using algorithm ECDSAP256SHA256; this key has an
|
|
||||||
unlimited lifetime. (A verbose copy of this policy
|
|
||||||
may be found in the source tree, in the file
|
|
||||||
``doc/misc/dnssec-policy.default.conf``.)
|
|
||||||
|
|
||||||
.. note::
|
There are two predefined ``dnssec-policy`` names: ``none`` and
|
||||||
|
``default``. Setting a zone's policy to ``none`` is the same as not
|
||||||
|
setting ``dnssec-policy`` at all; the zone is not signed. Policy
|
||||||
|
``default`` causes the zone to be signed with a single combined-signing
|
||||||
|
key (CSK) using algorithm ECDSAP256SHA256; this key has an unlimited
|
||||||
|
lifetime. (A verbose copy of this policy may be found in the source
|
||||||
|
tree, in the file ``doc/misc/dnssec-policy.default.conf``.)
|
||||||
|
|
||||||
The default signing policy may change in future releases.
|
.. note:: The default signing policy may change in future releases.
|
||||||
This could require changes to a signing policy
|
This could require changes to a signing policy when upgrading to a
|
||||||
when upgrading to a new version of BIND. Check
|
new version of BIND. Check the release notes carefully when
|
||||||
the release notes carefully when upgrading to be informed
|
upgrading to be informed of such changes. To prevent policy changes
|
||||||
of such changes. To prevent policy changes on upgrade,
|
on upgrade, use an explicitly defined ``dnssec-policy``, rather than
|
||||||
use an explicitly defined ``dnssec-policy``,
|
``default``.
|
||||||
rather than ``default``.
|
|
||||||
|
|
||||||
If a ``dnssec-policy`` statement is modified
|
If a ``dnssec-policy`` statement is modified and the server restarted or
|
||||||
and the server restarted or reconfigured, ``named``
|
reconfigured, ``named`` attempts to change the policy smoothly from the
|
||||||
attempts to change the policy smoothly from the old one to
|
old one to the new. For example, if the key algorithm is changed, then
|
||||||
the new. For example, if the key algorithm is changed, then
|
a new key is generated with the new algorithm, and the old algorithm is
|
||||||
a new key is generated with the new algorithm, and the old
|
retired when the existing key's lifetime ends.
|
||||||
algorithm is retired when the existing key's lifetime ends.
|
|
||||||
|
|
||||||
.. note::
|
.. note:: Rolling to a new policy while another key rollover is already
|
||||||
|
in progress is not yet supported, and may result in unexpected
|
||||||
Rolling to a new policy while another key rollover is
|
behavior.
|
||||||
already in progress is not yet supported, and may result in
|
|
||||||
unexpected behavior.
|
|
||||||
|
|
||||||
The following options can be specified in a ``dnssec-policy`` statement:
|
The following options can be specified in a ``dnssec-policy`` statement:
|
||||||
|
|
||||||
``dnskey-ttl``
|
``dnskey-ttl``
|
||||||
This indicates the TTL to use when generating DNSKEY resource records. The default is 1
|
This indicates the TTL to use when generating DNSKEY resource
|
||||||
hour (3600 seconds).
|
records. The default is 1 hour (3600 seconds).
|
||||||
|
|
||||||
``keys``
|
``keys``
|
||||||
This is a list specifying the algorithms and roles to use when
|
This is a list specifying the algorithms and roles to use when
|
||||||
generating keys and signing the zone.
|
generating keys and signing the zone. Entries in this list do not
|
||||||
Entries in this list do not represent specific
|
represent specific DNSSEC keys, which may be changed on a regular
|
||||||
DNSSEC keys, which may be changed on a regular basis,
|
basis, but the roles that keys play in the signing policy. For
|
||||||
but the roles that keys play in the signing policy.
|
example, configuring a KSK of algorithm RSASHA256 ensures that the
|
||||||
For example, configuring a KSK of algorithm RSASHA256 ensures
|
DNSKEY RRset always includes a key-signing key for that algorithm.
|
||||||
that the DNSKEY RRset always includes a key-signing key
|
|
||||||
for that algorithm.
|
|
||||||
|
|
||||||
Here is an example (for illustration purposes only) of
|
Here is an example (for illustration purposes only) of some possible
|
||||||
some possible entries in a ``keys``
|
entries in a ``keys`` list:
|
||||||
list:
|
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
keys {
|
keys {
|
||||||
ksk key-directory lifetime unlimited algorithm rsasha1 2048;
|
ksk key-directory lifetime unlimited algorithm rsasha1 2048;
|
||||||
zsk lifetime P30D algorithm 8;
|
zsk lifetime P30D algorithm 8;
|
||||||
csk lifetime P6MT12H3M15S algorithm ecdsa256;
|
csk lifetime P6MT12H3M15S algorithm ecdsa256;
|
||||||
};
|
};
|
||||||
|
|
||||||
This example specifies that three keys should be used
|
This example specifies that three keys should be used in the zone.
|
||||||
in the zone. The first token determines which role the
|
The first token determines which role the key plays in signing
|
||||||
key plays in signing RRsets. If set to
|
RRsets. If set to ``ksk``, then this is a key-signing key; it has
|
||||||
``ksk``, then this is
|
the KSK flag set and is only used to sign DNSKEY, CDS, and CDNSKEY
|
||||||
a key-signing key; it has the KSK flag set and
|
RRsets. If set to ``zsk``, this is a zone-signing key; the KSK flag
|
||||||
is only used to sign DNSKEY, CDS, and CDNSKEY RRsets.
|
is unset, and the key signs all RRsets *except* DNSKEY, CDS, and
|
||||||
If set to ``zsk``, this is
|
CDNSKEY. If set to ``csk``, the key has the KSK flag set and is
|
||||||
a zone-signing key; the KSK flag is unset, and
|
used to sign all RRsets.
|
||||||
the key signs all RRsets *except*
|
|
||||||
DNSKEY, CDS, and CDNSKEY. If set to
|
|
||||||
``csk``, the key has the KSK
|
|
||||||
flag set and is used to sign all RRsets.
|
|
||||||
|
|
||||||
An optional second token determines where the key is
|
An optional second token determines where the key is stored.
|
||||||
stored. Currently, keys can only be stored in the
|
Currently, keys can only be stored in the configured
|
||||||
configured ``key-directory``. This token
|
``key-directory``. This token may be used in the future to store
|
||||||
may be used in the future to store keys in hardware
|
keys in hardware service modules or separate directories.
|
||||||
service modules or separate directories.
|
|
||||||
|
|
||||||
The ``lifetime`` parameter specifies how
|
The ``lifetime`` parameter specifies how long a key may be used
|
||||||
long a key may be used before rolling over. In the
|
before rolling over. In the example above, the first key has an
|
||||||
example above, the first key has an unlimited
|
unlimited lifetime, the second key may be used for 30 days, and the
|
||||||
lifetime, the second key may be used for 30 days, and the
|
third key has a rather peculiar lifetime of 6 months, 12 hours, 3
|
||||||
third key has a rather peculiar lifetime of 6 months,
|
minutes, and 15 seconds. A lifetime of 0 seconds is the same as
|
||||||
12 hours, 3 minutes, and 15 seconds. A lifetime of 0
|
``unlimited``.
|
||||||
seconds is the same as ``unlimited``.
|
|
||||||
|
|
||||||
Note that the lifetime of a key may be extended if
|
Note that the lifetime of a key may be extended if retiring it too
|
||||||
retiring it too soon would cause validation failures.
|
soon would cause validation failures. For example, if the key were
|
||||||
For example, if the key were configured to roll more
|
configured to roll more frequently than its own TTL, its lifetime
|
||||||
frequently than its own TTL, its lifetime would
|
would automatically be extended to account for this.
|
||||||
automatically be extended to account for this.
|
|
||||||
|
|
||||||
The ``algorithm`` parameter specifies
|
The ``algorithm`` parameter specifies the key's algorithm, expressed
|
||||||
the key's algorithm, expressed either as a string
|
either as a string ("rsasha256", "ecdsa384", etc.) or as a decimal
|
||||||
("rsasha256", "ecdsa384", etc.) or as a decimal number.
|
number. An optional second parameter specifies the key's size in
|
||||||
An optional second parameter specifies the key's size
|
bits. If it is omitted, as shown in the example for the second and
|
||||||
in bits. If it is omitted, as shown in the
|
third keys, an appropriate default size for the algorithm is used.
|
||||||
example for the second and third keys, an appropriate
|
|
||||||
default size for the algorithm is used.
|
|
||||||
|
|
||||||
``publish-safety``
|
``publish-safety``
|
||||||
This is a margin that is added to the pre-publication
|
This is a margin that is added to the pre-publication interval in
|
||||||
interval in rollover timing calculations, to give some
|
rollover timing calculations, to give some extra time to cover
|
||||||
extra time to cover unforeseen events. This increases
|
unforeseen events. This increases the time between when keys are
|
||||||
the time between when keys are published and when they become active.
|
published and when they become active. The default is ``PT1H`` (1
|
||||||
The default is ``PT1H`` (1 hour).
|
hour).
|
||||||
|
|
||||||
``retire-safety``
|
``retire-safety``
|
||||||
This is a margin that is added to the post-publication interval
|
This is a margin that is added to the post-publication interval in
|
||||||
in rollover timing calculations, to give some extra time
|
rollover timing calculations, to give some extra time to cover
|
||||||
to cover unforeseen events. This increases the time a key
|
unforeseen events. This increases the time a key remains published
|
||||||
remains published after it is no longer active. The
|
after it is no longer active. The default is ``PT1H`` (1 hour).
|
||||||
default is ``PT1H`` (1 hour).
|
|
||||||
|
|
||||||
``signatures-refresh``
|
``signatures-refresh``
|
||||||
This determines how frequently an RRSIG record needs to be
|
This determines how frequently an RRSIG record needs to be
|
||||||
refreshed. The signature is renewed when the time until
|
refreshed. The signature is renewed when the time until the
|
||||||
the expiration time is less than the specified interval.
|
expiration time is less than the specified interval. The default is
|
||||||
The default is ``P5D`` (5 days), meaning
|
``P5D`` (5 days), meaning signatures that expire in 5 days or sooner
|
||||||
signatures that expire in 5 days or sooner are
|
are refreshed.
|
||||||
refreshed.
|
|
||||||
|
|
||||||
``signatures-validity``
|
``signatures-validity``
|
||||||
This indicates the validity period of an RRSIG record (subject to
|
This indicates the validity period of an RRSIG record (subject to
|
||||||
inception offset and jitter). The default is
|
inception offset and jitter). The default is ``P2W`` (2 weeks).
|
||||||
``P2W`` (2 weeks).
|
|
||||||
|
|
||||||
``signatures-validity-dnskey``
|
``signatures-validity-dnskey``
|
||||||
This is similar to ``signatures-validity``, but for
|
This is similar to ``signatures-validity``, but for DNSKEY records.
|
||||||
DNSKEY records. The default is ``P2W``
|
The default is ``P2W`` (2 weeks).
|
||||||
(2 weeks).
|
|
||||||
|
|
||||||
``max-zone-ttl``
|
``max-zone-ttl``
|
||||||
Like the ``max-zone-ttl`` zone option,
|
Like the ``max-zone-ttl`` zone option, this specifies the maximum
|
||||||
this specifies the maximum permissible TTL value, in
|
permissible TTL value, in seconds, for the zone. When loading a
|
||||||
seconds, for the zone. When loading a zone file using
|
zone file using a ``masterfile-format`` of ``text`` or ``raw``, any
|
||||||
a ``masterfile-format`` of
|
record encountered with a TTL higher than ``max-zone-ttl`` is capped
|
||||||
``text`` or ``raw``,
|
at the maximum permissible TTL value.
|
||||||
any record encountered with a TTL higher than
|
|
||||||
``max-zone-ttl`` is capped at the
|
|
||||||
maximum permissible TTL value.
|
|
||||||
|
|
||||||
This is needed in DNSSEC-maintained zones because when
|
This is needed in DNSSEC-maintained zones because when rolling to a
|
||||||
rolling to a new DNSKEY, the old key needs to remain
|
new DNSKEY, the old key needs to remain available until RRSIG
|
||||||
available until RRSIG records have expired from caches.
|
records have expired from caches. The ``max-zone-ttl`` option
|
||||||
The ``max-zone-ttl`` option guarantees that
|
guarantees that the largest TTL in the zone is no higher than the
|
||||||
the largest TTL in the zone is no higher than the
|
set value.
|
||||||
set value.
|
|
||||||
|
|
||||||
.. note::
|
.. note:: Because ``map``-format files load directly into memory,
|
||||||
Because ``map``-format files
|
this option cannot be used with them.
|
||||||
load directly into memory, this option cannot be
|
|
||||||
used with them.
|
|
||||||
|
|
||||||
The default value is ``PT24H`` (24 hours).
|
The default value is ``PT24H`` (24 hours). A ``max-zone-ttl`` of
|
||||||
A ``max-zone-ttl`` of zero is treated as if
|
zero is treated as if the default value were in use.
|
||||||
the default value were in use.
|
|
||||||
|
|
||||||
``nsec3param``
|
``nsec3param``
|
||||||
Use NSEC3 instead of NSEC, and optionally set the NSEC3 parameters.
|
Use NSEC3 instead of NSEC, and optionally set the NSEC3 parameters.
|
||||||
|
|
||||||
Here is an example of an ``nsec3`` configuration:
|
Here is an example of an ``nsec3`` configuration:
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
nsec3param iterations 5 optout no salt-length 8;
|
nsec3param iterations 5 optout no salt-length 8;
|
||||||
|
|
||||||
The default is to use NSEC. The ``iterations``, ``optout``
|
The default is to use NSEC. The ``iterations``, ``optout`` and
|
||||||
and ``salt-length`` parts are optional, but if not set, the
|
``salt-length`` parts are optional, but if not set, the values in
|
||||||
values in the example above are the default NSEC3 parameters.
|
the example above are the default NSEC3 parameters.
|
||||||
|
|
||||||
``zone-propagation-delay``
|
``zone-propagation-delay``
|
||||||
This is the expected propagation delay from the time when a zone
|
This is the expected propagation delay from the time when a zone is
|
||||||
is first updated to the time when the new version of the
|
first updated to the time when the new version of the zone is served
|
||||||
zone is served by all secondary servers. The default
|
by all secondary servers. The default is ``PT5M`` (5 minutes).
|
||||||
is ``PT5M`` (5 minutes).
|
|
||||||
|
|
||||||
``parent-ds-ttl``
|
``parent-ds-ttl``
|
||||||
This is the TTL of the DS RRset that the parent zone uses. The
|
This is the TTL of the DS RRset that the parent zone uses. The
|
||||||
default is ``P1D`` (1 day).
|
default is ``P1D`` (1 day).
|
||||||
|
|
||||||
``parent-propagation-delay``
|
``parent-propagation-delay``
|
||||||
This is the expected propagation delay from the time when the
|
This is the expected propagation delay from the time when the parent
|
||||||
parent zone is updated to the time when the new version
|
zone is updated to the time when the new version is served by all of
|
||||||
is served by all of the parent zone's name servers.
|
the parent zone's name servers. The default is ``PT1H`` (1 hour).
|
||||||
The default is ``PT1H`` (1 hour).
|
|
||||||
|
|
||||||
.. _managed-keys:
|
.. _managed-keys:
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user