]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
update documentation
authorEvan Hunt <each@isc.org>
Wed, 3 Oct 2018 20:08:30 +0000 (13:08 -0700)
committerEvan Hunt <each@isc.org>
Wed, 5 Jun 2019 14:49:57 +0000 (07:49 -0700)
- change references to trusted-keys to dnssec-keys with static-key
- rebuild doc/misc/options and other generated grammar doc
- add a "see MANAGED-KEYS" note when building named.conf.docbook

16 files changed:
bin/delv/delv.docbook
bin/named/named.conf.docbook
bin/rndc/rndc.docbook
bin/tests/named.conf
doc/arm/Bv9ARM-book.xml
doc/arm/dnssec-keys.grammar.xml [new file with mode: 0644]
doc/arm/libdns.xml
doc/arm/managed-keys.grammar.xml
doc/arm/managed-keys.xml
doc/arm/options.grammar.xml
doc/arm/trusted-keys.grammar.xml
doc/misc/Makefile.in
doc/misc/docbook-options.pl
doc/misc/options
lib/dns/zone.c
util/copyrights

index f8c4f79737c70ebc852221e5993c1d5d226d244b..d30bedd55ffa391386b9d2c7b65444391da91264 100644 (file)
          </para>
          <para>
            Note: When reading the trust anchor file,
-           <command>delv</command> treats <option>managed-keys</option>
-           statements and <option>trusted-keys</option> statements
-           identically.  That is, for a managed key, it is the
-           <emphasis>initial</emphasis> key that is trusted; RFC 5011
-           key management is not supported. <command>delv</command>
-           will not consult the managed-keys database maintained by
-           <command>named</command>. This means that if either of the
-           keys in <filename>/etc/bind.keys</filename> is revoked
+           <command>delv</command> treats <option>dnssec-keys</option>
+           <option>initial-key</option> and <option>static-key</option>
+           entries identically.  That is, even if a key is configured
+           with <command>initial-key</command>, indicating that it is
+           meant to be used only as an initializing key for RFC 5011
+           key maintenance, it is still treated by <command>delv</command>
+           as if it had been configured as a <command>static-key</command>.
+           <command>delv</command> does not consult the managed keys
+           database maintained by <command>named</command>. This means
+           that if either of the keys in
+           <filename>/etc/bind.keys</filename> is revoked
            and rolled over, it will be necessary to update
            <filename>/etc/bind.keys</filename> to use DNSSEC
            validation in <command>delv</command>.
index 0f7b74e7bc8eeb611f73b63812eb62025a2d997f..f86e418b744bea2d0349ea52ca78542d58da2a01 100644 (file)
@@ -13,7 +13,7 @@
 
 <refentry xmlns:db="http://docbook.org/ns/docbook" version="5.0" xml:id="man.named.conf">
   <info>
-    <date>2018-12-07</date>
+    <date>2019-05-10</date>
   </info>
   <refentryinfo>
     <corpname>ISC</corpname>
   </refsection>
 
   <refsection><info><title>ACL</title></info>
-
     <literallayout class="normal">
 acl <replaceable>string</replaceable> { <replaceable>address_match_element</replaceable>; ... };
 </literallayout>
   </refsection>
 
   <refsection><info><title>CONTROLS</title></info>
-
     <literallayout class="normal">
 controls {
        inet ( <replaceable>ipv4_address</replaceable> | <replaceable>ipv6_address</replaceable> |
@@ -104,7 +102,6 @@ controls {
   </refsection>
 
   <refsection><info><title>DLZ</title></info>
-
     <literallayout class="normal">
 dlz <replaceable>string</replaceable> {
        database <replaceable>string</replaceable>;
@@ -113,8 +110,15 @@ dlz <replaceable>string</replaceable> {
 </literallayout>
   </refsection>
 
-  <refsection><info><title>DYNDB</title></info>
+  <refsection><info><title>DNSSEC-KEYS</title></info>
+    <literallayout class="normal">
+dnssec-keys { <replaceable>string</replaceable> ( static-key |
+    initial-key ) <replaceable>integer</replaceable> <replaceable>integer</replaceable> <replaceable>integer</replaceable>
+    <replaceable>quoted_string</replaceable>; ... };
+</literallayout>
+  </refsection>
 
+  <refsection><info><title>DYNDB</title></info>
     <literallayout class="normal">
 dyndb <replaceable>string</replaceable> <replaceable>quoted_string</replaceable> {
     <replaceable>unspecified-text</replaceable> };
@@ -122,7 +126,6 @@ dyndb <replaceable>string</replaceable> <replaceable>quoted_string</replaceable>
   </refsection>
 
   <refsection><info><title>KEY</title></info>
-
     <literallayout class="normal">
 key <replaceable>string</replaceable> {
        algorithm <replaceable>string</replaceable>;
@@ -132,7 +135,6 @@ key <replaceable>string</replaceable> {
   </refsection>
 
   <refsection><info><title>LOGGING</title></info>
-
     <literallayout class="normal">
 logging {
        category <replaceable>string</replaceable> { <replaceable>string</replaceable>; ... };
@@ -154,15 +156,15 @@ logging {
 
 
   <refsection><info><title>MANAGED-KEYS</title></info>
-
+  <para>See DNSSEC-KEYS.</para>
     <literallayout class="normal">
-managed-keys { <replaceable>string</replaceable> <replaceable>string</replaceable> <replaceable>integer</replaceable>
-    <replaceable>integer</replaceable> <replaceable>integer</replaceable> <replaceable>quoted_string</replaceable>; ... };
+managed-keys { <replaceable>string</replaceable> ( static-key |
+    initial-key ) <replaceable>integer</replaceable> <replaceable>integer</replaceable> <replaceable>integer</replaceable>
+    <replaceable>quoted_string</replaceable>; ... };
 </literallayout>
   </refsection>
 
   <refsection><info><title>MASTERS</title></info>
-
     <literallayout class="normal">
 masters <replaceable>string</replaceable> [ port <replaceable>integer</replaceable> ] [ dscp
     <replaceable>integer</replaceable> ] { ( <replaceable>masters</replaceable> | <replaceable>ipv4_address</replaceable> [
@@ -172,7 +174,6 @@ masters <replaceable>string</replaceable> [ port <replaceable>integer</replaceab
   </refsection>
 
   <refsection><info><title>OPTIONS</title></info>
-
     <literallayout class="normal">
 options {
        allow-new-zones <replaceable>boolean</replaceable>;
@@ -251,7 +252,6 @@ options {
        dnsrps-options { <replaceable>unspecified-text</replaceable> };
        dnssec-accept-expired <replaceable>boolean</replaceable>;
        dnssec-dnskey-kskonly <replaceable>boolean</replaceable>;
-       dnssec-enable <replaceable>boolean</replaceable>;
        dnssec-loadkeys-interval <replaceable>integer</replaceable>;
        dnssec-lookaside ( <replaceable>string</replaceable> trust-anchor
            <replaceable>string</replaceable> | auto | no );
@@ -403,11 +403,12 @@ options {
        resolver-retry-interval <replaceable>integer</replaceable>;
        response-padding { <replaceable>address_match_element</replaceable>; ... } block-size
            <replaceable>integer</replaceable>;
-       response-policy { zone <replaceable>string</replaceable> [ log <replaceable>boolean</replaceable> ] [ max-policy-ttl
-           <replaceable>ttlval</replaceable> ] [ min-update-interval <replaceable>ttlval</replaceable> ] [ policy ( cname |
-           disabled | drop | given | no-op | nodata | nxdomain | passthru
-           | tcp-only <replaceable>quoted_string</replaceable> ) ] [ recursive-only <replaceable>boolean</replaceable> ] [
-           nsip-enable <replaceable>boolean</replaceable> ] [ nsdname-enable <replaceable>boolean</replaceable> ]; ... } [
+       response-policy { zone <replaceable>string</replaceable> [ add-soa <replaceable>boolean</replaceable> ] [ log
+           <replaceable>boolean</replaceable> ] [ max-policy-ttl <replaceable>ttlval</replaceable> ] [ min-update-interval
+           <replaceable>ttlval</replaceable> ] [ policy ( cname | disabled | drop | given | no-op |
+           nodata | nxdomain | passthru | tcp-only <replaceable>quoted_string</replaceable> ) ] [
+           recursive-only <replaceable>boolean</replaceable> ] [ nsip-enable <replaceable>boolean</replaceable> ] [
+           nsdname-enable <replaceable>boolean</replaceable> ]; ... } [ add-soa <replaceable>boolean</replaceable> ] [
            break-dnssec <replaceable>boolean</replaceable> ] [ max-policy-ttl <replaceable>ttlval</replaceable> ] [
            min-update-interval <replaceable>ttlval</replaceable> ] [ min-ns-dots <replaceable>integer</replaceable> ] [
            nsip-wait-recurse <replaceable>boolean</replaceable> ] [ qname-wait-recurse <replaceable>boolean</replaceable> ]
@@ -474,7 +475,6 @@ options {
   </refsection>
 
   <refsection><info><title>PLUGIN</title></info>
-
     <literallayout class="normal">
 plugin ( query ) <replaceable>string</replaceable> [ { <replaceable>unspecified-text</replaceable>
     } ];
@@ -482,7 +482,6 @@ plugin ( query ) <replaceable>string</replaceable> [ { <replaceable>unspecified-
   </refsection>
 
   <refsection><info><title>SERVER</title></info>
-
     <literallayout class="normal">
 server <replaceable>netprefix</replaceable> {
        bogus <replaceable>boolean</replaceable>;
@@ -520,7 +519,6 @@ server <replaceable>netprefix</replaceable> {
   </refsection>
 
   <refsection><info><title>STATISTICS-CHANNELS</title></info>
-
     <literallayout class="normal">
 statistics-channels {
        inet ( <replaceable>ipv4_address</replaceable> | <replaceable>ipv6_address</replaceable> |
@@ -532,15 +530,15 @@ statistics-channels {
   </refsection>
 
   <refsection><info><title>TRUSTED-KEYS</title></info>
-
+  <para>Deprecated - see DNSSEC-KEYS.</para>
     <literallayout class="normal">
-trusted-keys { <replaceable>string</replaceable> <replaceable>integer</replaceable> <replaceable>integer</replaceable>
-    <replaceable>integer</replaceable> <replaceable>quoted_string</replaceable>; ... };
+trusted-keys { <replaceable>string</replaceable> <replaceable>integer</replaceable>
+    <replaceable>integer</replaceable> <replaceable>integer</replaceable>
+    <replaceable>quoted_string</replaceable>; ... };, deprecated
 </literallayout>
   </refsection>
 
   <refsection><info><title>VIEW</title></info>
-
     <literallayout class="normal">
 view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
        allow-new-zones <replaceable>boolean</replaceable>;
@@ -612,7 +610,9 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
        dnsrps-options { <replaceable>unspecified-text</replaceable> };
        dnssec-accept-expired <replaceable>boolean</replaceable>;
        dnssec-dnskey-kskonly <replaceable>boolean</replaceable>;
-       dnssec-enable <replaceable>boolean</replaceable>;
+       dnssec-keys { <replaceable>string</replaceable> ( static-key |
+           initial-key ) <replaceable>integer</replaceable> <replaceable>integer</replaceable>
+           <replaceable>integer</replaceable> <replaceable>quoted_string</replaceable>; ... };
        dnssec-loadkeys-interval <replaceable>integer</replaceable>;
        dnssec-lookaside ( <replaceable>string</replaceable> trust-anchor
            <replaceable>string</replaceable> | auto | no );
@@ -650,9 +650,9 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
        key-directory <replaceable>quoted_string</replaceable>;
        lame-ttl <replaceable>ttlval</replaceable>;
        lmdb-mapsize <replaceable>sizeval</replaceable>;
-       managed-keys { <replaceable>string</replaceable> <replaceable>string</replaceable>
-           <replaceable>integer</replaceable> <replaceable>integer</replaceable> <replaceable>integer</replaceable>
-           <replaceable>quoted_string</replaceable>; ... };
+       managed-keys { <replaceable>string</replaceable> ( static-key |
+           initial-key ) <replaceable>integer</replaceable> <replaceable>integer</replaceable>
+           <replaceable>integer</replaceable> <replaceable>quoted_string</replaceable>; ... };
        masterfile-format ( map | raw | text );
        masterfile-style ( full | relative );
        match-clients { <replaceable>address_match_element</replaceable>; ... };
@@ -735,11 +735,12 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
        resolver-retry-interval <replaceable>integer</replaceable>;
        response-padding { <replaceable>address_match_element</replaceable>; ... } block-size
            <replaceable>integer</replaceable>;
-       response-policy { zone <replaceable>string</replaceable> [ log <replaceable>boolean</replaceable> ] [ max-policy-ttl
-           <replaceable>ttlval</replaceable> ] [ min-update-interval <replaceable>ttlval</replaceable> ] [ policy ( cname |
-           disabled | drop | given | no-op | nodata | nxdomain | passthru
-           | tcp-only <replaceable>quoted_string</replaceable> ) ] [ recursive-only <replaceable>boolean</replaceable> ] [
-           nsip-enable <replaceable>boolean</replaceable> ] [ nsdname-enable <replaceable>boolean</replaceable> ]; ... } [
+       response-policy { zone <replaceable>string</replaceable> [ add-soa <replaceable>boolean</replaceable> ] [ log
+           <replaceable>boolean</replaceable> ] [ max-policy-ttl <replaceable>ttlval</replaceable> ] [ min-update-interval
+           <replaceable>ttlval</replaceable> ] [ policy ( cname | disabled | drop | given | no-op |
+           nodata | nxdomain | passthru | tcp-only <replaceable>quoted_string</replaceable> ) ] [
+           recursive-only <replaceable>boolean</replaceable> ] [ nsip-enable <replaceable>boolean</replaceable> ] [
+           nsdname-enable <replaceable>boolean</replaceable> ]; ... } [ add-soa <replaceable>boolean</replaceable> ] [
            break-dnssec <replaceable>boolean</replaceable> ] [ max-policy-ttl <replaceable>ttlval</replaceable> ] [
            min-update-interval <replaceable>ttlval</replaceable> ] [ min-ns-dots <replaceable>integer</replaceable> ] [
            nsip-wait-recurse <replaceable>boolean</replaceable> ] [ qname-wait-recurse <replaceable>boolean</replaceable> ]
@@ -801,9 +802,10 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
        transfer-source-v6 ( <replaceable>ipv6_address</replaceable> | * ) [ port ( <replaceable>integer</replaceable> | * )
            ] [ dscp <replaceable>integer</replaceable> ];
        trust-anchor-telemetry <replaceable>boolean</replaceable>; // experimental
-       trusted-keys { <replaceable>string</replaceable> <replaceable>integer</replaceable>
-           <replaceable>integer</replaceable> <replaceable>integer</replaceable> <replaceable>quoted_string</replaceable>;
-           ... };
+       trusted-keys { <replaceable>string</replaceable>
+           <replaceable>integer</replaceable> <replaceable>integer</replaceable>
+           <replaceable>integer</replaceable>
+           <replaceable>quoted_string</replaceable>; ... };, deprecated
        try-tcp-refresh <replaceable>boolean</replaceable>;
        update-check-ksk <replaceable>boolean</replaceable>;
        use-alt-transfer-source <replaceable>boolean</replaceable>;
@@ -915,7 +917,6 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
   </refsection>
 
   <refsection><info><title>ZONE</title></info>
-
     <literallayout class="normal">
 zone <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
        allow-notify { <replaceable>address_match_element</replaceable>; ... };
index 7fda5916fb980d409892ccdd894abfc760570bd7..055683536e6a5a53be2df7b12a26c50ea901a762 100644 (file)
        <term><userinput>managed-keys <replaceable>(status | refresh | sync | destroy)</replaceable> <optional><replaceable>class</replaceable> <optional><replaceable>view</replaceable></optional></optional></userinput></term>
        <listitem>
          <para>
-            Inspect and control the "managed-keys" database which
+            Inspect and control the "managed keys" database which
             handles RFC 5011 DNSSEC trust anchor maintenance. If a view
             is specified, these commands are applied to that view;
             otherwise they are applied to all views.
             <listitem>
               <para>
                 When run with the <literal>status</literal> keyword, prints
-                the current status of the managed-keys database.
+                the current status of the managed keys database.
               </para>
             </listitem>
             <listitem>
               <para>
                 When run with the <literal>refresh</literal> keyword,
                 forces an immediate refresh query to be sent for all
-                the managed keys, updating the managed-keys database
+                the managed keys, updating the managed keys database
                 if any new keys are found, without waiting the normal
                 refresh interval.
               </para>
             <listitem>
               <para>
                 When run with the <literal>sync</literal> keyword, forces an
-                immediate dump of the managed-keys database to disk
+                immediate dump of the managed keys database to disk
                 (in the file <filename>managed-keys.bind</filename> or
                 (<filename><replaceable>viewname</replaceable>.mkeys</filename>).
                 This synchronizes the database with its journal file, so
             <listitem>
               <para>
                 When run with the <literal>destroy</literal> keyword, the
-                managed-keys database is shut down and deleted, and all key
+                managed keys database is shut down and deleted, and all key
                 maintenance is terminated.  This command should be used only
                 with extreme caution.
               </para>
        <listitem>
          <para>
            Dump the security roots (i.e., trust anchors
-           configured via <command>trusted-keys</command>,
-           <command>managed-keys</command>, or
-           <command>dnssec-validation auto</command>) and negative trust
+           configured via <command>dnssec-keys</command> statements,
+           or the synonymous <command>managed-keys</command> or
+           the deprecated <command>trusted-keys</command> statements, or
+           via <command>dnssec-validation auto</command>) and negative trust
            anchors for the specified views.  If no view is specified, all
            views are dumped.  Security roots will indicate whether
            they are configured as trusted keys, managed keys, or
index edb9af2fb23b7346aba4f483f26a569bc403e313..928dd9e96a2296224a90181481cbd43bfd9b717d 100644 (file)
@@ -259,8 +259,8 @@ key "non-viewkey" { secret "YWFh" ; algorithm "zzz" ; };
 view "test-view" in {
        key "viewkey" { algorithm "xxx" ; secret "eXl5" ; };
        also-notify { 10.2.2.3; };
-       trusted-keys {
-               foo.com. 4 3 2 "abdefghijklmnopqrstuvwxyz";
+       managed-keys {
+               foo.com. static 4 3 2 "abdefghijklmnopqrstuvwxyz";
        };
        sig-validity-interval 45;
        max-cache-size 100000;
@@ -342,8 +342,8 @@ zone "." {
 //     pubkey 257 255 1 "AQP2fHpZ4VMpKo/jc9Fod821uyfY5p8j5h/Am0V/KpBTMZjdXmp9QJe6yFRoIIzkaNCgTIftASdpXGgCwFB2j2KXP/rick6gvEer5VcDEkLR5Q==";
 };
 
-trusted-keys {
-       "." 257 255 1 "AQP2fHpZ4VMpKo/jc9Fod821uyfY5p8j5h/Am0V/KpBTMZjdXmp9QJe6yFRoIIzkaNCgTIftASdpXGgCwFB2j2KXP/rick6gvEer5VcDEkLR5Q==";
+managed-keys {
+       "." static 257 255 1 "AQP2fHpZ4VMpKo/jc9Fod821uyfY5p8j5h/Am0V/KpBTMZjdXmp9QJe6yFRoIIzkaNCgTIftASdpXGgCwFB2j2KXP/rick6gvEer5VcDEkLR5Q==";
 };
 
 
index eef1263b578186d5aeea14dda634d75789e1720e..cc9921bcfca1904e5201e16a32ddc1d71cf08f88 100644 (file)
@@ -2087,7 +2087,7 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
        zone key of another zone above this one in the DNS tree.
       </para>
 
-      <section xml:id="dnssec_keys"><info><title>Generating Keys</title></info>
+      <section xml:id="generating_dnssec_keys"><info><title>Generating Keys</title></info>
 
        <para>
          The <command>dnssec-keygen</command> program is used to
@@ -2212,8 +2212,9 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
          <userinput>yes</userinput>, DNSSEC validation will only occur
          if at least one trust anchor has been explicitly configured
          in <filename>named.conf</filename>
-         using a <command>trusted-keys</command> or
-         <command>managed-keys</command> statement.
+         using a <command>dnssec-keys</command> statement (or the
+         synonymous <command>managed-keys</command> or the deprecated
+         <command>trusted-keys</command> statements).
        </para>
        <para>
          When <command>dnssec-validation</command> is set to
@@ -2226,23 +2227,20 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
        </para>
 
        <para>
-         <command>trusted-keys</command> are copies of DNSKEY RRs
-         for zones that are used to form the first link in the
-         cryptographic chain of trust.  All keys listed in
-         <command>trusted-keys</command> (and corresponding zones)
-         are deemed to exist and only the listed keys will be used
-         to validated the DNSKEY RRset that they are from.
+         The keys specified in <command>dnssec-keys</command>
+         copies of DNSKEY RRs for zones that are used to form the
+         first link in the cryptographic chain of trust.  Keys configured
+         with the keyword <command>static-key</command> are loaded directly
+         into the table of trust anchors, and can only be changed by
+         altering the configuration. Keys configured with
+         <command>initial-key</command> are used to initialize
+         RFC 5011 trust anchor maintenance, and will be kept up to
+         date automatically after the first time <command>named</command>
+         runs.
        </para>
 
        <para>
-         <command>managed-keys</command> are trusted keys which are
-         automatically kept up to date via RFC 5011 trust anchor
-         maintenance.
-       </para>
-
-       <para>
-         <command>trusted-keys</command> and
-         <command>managed-keys</command> are described in more detail
+         <command>dnssec-keys</command> is described in more detail
          later in this document.
        </para>
 
@@ -2265,7 +2263,7 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
        </para>
 
 <programlisting>
-managed-keys {
+dnssec-keys {
        /* Root Key */
        "." initial-key 257 3 3 "BNY4wrWM1nCfJ+CXd0rVXyYmobt7sEEfK3clRbGaTwS
                                 JxrGkxJWoZu6I7PzJu/E9gx4UC1zGAHlXKdE4zYIpRh
@@ -2277,11 +2275,8 @@ managed-keys {
                                 66gKodQj+MiA21AfUVe7u99WzTLzY3qlxDhxYQQ20FQ
                                 97S+LKUTpQcq27R7AT3/V5hRQxScINqwcz4jYqZD2fQ
                                 dgxbcDTClU0CRBdiieyLMNzXG3";
-};
-
-trusted-keys {
        /* Key for our organization's forward zone */
-       example.com. 257 3 5 "AwEAAaxPMcR2x0HbQV4WeZB6oEDX+r0QM6
+       example.com. static-key 257 3 5 "AwEAAaxPMcR2x0HbQV4WeZB6oEDX+r0QM6
                              5KbhTjrW1ZaARmPhEZZe3Y9ifgEuq7vZ/z
                              GZUdEGNWy+JZzus0lUptwgjGwhUS1558Hb
                              4JKUbbOTcM8pwXlj0EiX3oDFVmjHO444gL
@@ -2294,7 +2289,7 @@ trusted-keys {
                              1OTQ09A0=";
 
        /* Key for our reverse zone. */
-       2.0.192.IN-ADDRPA.NET. 257 3 5 "AQOnS4xn/IgOUpBPJ3bogzwc
+       2.0.192.IN-ADDRPA.NET. static-key 257 3 5 "AQOnS4xn/IgOUpBPJ3bogzwc
                                       xOdNax071L18QqZnQQQAVVr+i
                                       LhGTnNGp3HoWQLUIzKrJVZ3zg
                                       gy3WwNT6kZo6c0tszYqbtvchm
@@ -3205,11 +3200,17 @@ $ORIGIN 0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.
            </row>
            <row rowsep="0">
              <entry colname="1">
-               <para><command>trusted-keys</command></para>
+               <para><command>dnssec-keys</command></para>
              </entry>
              <entry colname="2">
                <para>
-                 defines trusted DNSSEC keys.
+                 defines DNSSEC keys: if used with the
+                 <command>initial-key</command> keyword,
+                 keys are kept up to date using RFC 5011
+                 trust anchor maintenance, and if used with
+                 <command>static-key</command>, keys are permanent.
+                 Identical to <command>managed-keys</command>,
+                 but has been added for improved clarity.
                </para>
              </entry>
            </row>
@@ -3219,8 +3220,22 @@ $ORIGIN 0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.
              </entry>
              <entry colname="2">
                <para>
-                 lists DNSSEC keys to be kept up to date
-                 using RFC 5011 trust anchor maintenance.
+                 is identical to <command>dnssec-keys</command>,
+                 and is retained for backward compatibility.
+               </para>
+             </entry>
+           </row>
+           <row rowsep="0">
+             <entry colname="1">
+               <para><command>trusted-keys</command></para>
+             </entry>
+             <entry colname="2">
+               <para>
+                 defines permanent trusted DNSSEC keys;
+                 this option is deprecated in favor
+                 of <command>dnssec-keys</command> with
+                 the <command>static-key</command> keyword,
+                 and may be removed in a future release.
                </para>
              </entry>
            </row>
@@ -4595,10 +4610,12 @@ badresp:1,adberr:0,findfail:0,valfail:0]
            <listitem>
              <para>
                Specifies the directory in which to store the files that
-               track managed DNSSEC keys.  By default, this is the working
-               directory.  The directory <emphasis>must</emphasis>
-               be writable by the effective user ID of the
-               <command>named</command> process.
+               track managed DNSSEC keys (i.e., those configured using
+               the <command>initial-key</command> keyword in a
+               <command>dnssec-keys</command> statement).  By default,
+               this is the working directory.  The directory
+               <emphasis>must</emphasis> be writable by the effective
+               user ID of the <command>named</command> process.
              </para>
              <para>
                If <command>named</command> is not configured to use views,
@@ -5100,10 +5117,10 @@ options {
                then <command>named</command> will only accept answers if
                they are secure.  If <userinput>no</userinput>, then normal
                DNSSEC validation applies allowing for insecure answers to
-               be accepted.  The specified domain must be under a
-               <command>trusted-keys</command> or
-               <command>managed-keys</command> statement, or
-               <command>dnssec-validation auto</command> must be active.
+               be accepted.  The specified domain must be defined as a
+               trust anchor, for instance in a <command>dnssec-keys</command>
+               statement, or <command>dnssec-validation auto</command> must
+               be active.
              </para>
            </listitem>
          </varlistentry>
@@ -6195,8 +6212,8 @@ options {
                <para>
                  Causes <command>named</command> to send specially-formed
                  queries once per day to domains for which trust anchors
-                 have been configured via <command>trusted-keys</command>,
-                 <command>managed-keys</command>, or
+                 have been configured via, e.g.,
+                 <command>dnssec-keys</command> or
                  <command>dnssec-validation auto</command>.
                </para>
                <para>
@@ -6411,10 +6428,11 @@ options {
                <para>
                  If set to <userinput>yes</userinput>, DNSSEC validation is
                  enabled, but a trust anchor must be manually configured
-                 using a <command>trusted-keys</command>
-                 or <command>managed-keys</command> statement; if there
-                 is no configured trust anchor, validation will not take
-                 place.
+                 using a <command>dnssec-keys</command> statement (or
+                 the synonymous <command>managed-keys</command>, or the
+                 deprecated <command>trusted-keys</command> statements).
+                 If there is no configured trust anchor, validation will
+                 not take place.
                </para>
                <para>
                  If set to <userinput>no</userinput>, DNSSEC validation
@@ -10709,246 +10727,236 @@ example.com                 CNAME   rpz-tcp-only.
          </para>
        </section>
 
-      <section xml:id="statschannels"><info><title><command>statistics-channels</command> Statement Grammar</title></info>
-       <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="statistics-channels.grammar.xml"/>
-      </section>
+       <section xml:id="statschannels"><info><title><command>statistics-channels</command> Statement Grammar</title></info>
+         <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="statistics-channels.grammar.xml"/>
+       </section>
 
-      <section xml:id="statistics_channels"><info><title><command>statistics-channels</command> Statement Definition and
-           Usage</title></info>
+       <section xml:id="statistics_channels"><info><title><command>statistics-channels</command> Statement Definition and
+             Usage</title></info>
 
-       <para>
-         The <command>statistics-channels</command> statement
-         declares communication channels to be used by system
-         administrators to get access to statistics information of
-         the name server.
-       </para>
+         <para>
+           The <command>statistics-channels</command> statement
+           declares communication channels to be used by system
+           administrators to get access to statistics information of
+           the name server.
+         </para>
 
-       <para>
-         This statement intends to be flexible to support multiple
-         communication protocols in the future, but currently only
-         HTTP access is supported.
-         It requires that BIND 9 be compiled with libxml2 and/or
-         json-c (also known as libjson0); the
-         <command>statistics-channels</command> statement is
-         still accepted even if it is built without the library,
-         but any HTTP access will fail with an error.
-       </para>
+         <para>
+           This statement intends to be flexible to support multiple
+           communication protocols in the future, but currently only
+           HTTP access is supported.
+           It requires that BIND 9 be compiled with libxml2 and/or
+           json-c (also known as libjson0); the
+           <command>statistics-channels</command> statement is
+           still accepted even if it is built without the library,
+           but any HTTP access will fail with an error.
+         </para>
 
-       <para>
-         An <command>inet</command> control channel is a TCP socket
-         listening at the specified <command>ip_port</command> on the
-         specified <command>ip_addr</command>, which can be an IPv4 or IPv6
-         address.  An <command>ip_addr</command> of <literal>*</literal>
-         (asterisk) is
-         interpreted as the IPv4 wildcard address; connections will be
-         accepted on any of the system's IPv4 addresses.
-         To listen on the IPv6 wildcard address,
-         use an <command>ip_addr</command> of <literal>::</literal>.
-       </para>
+         <para>
+           An <command>inet</command> control channel is a TCP socket
+           listening at the specified <command>ip_port</command> on the
+           specified <command>ip_addr</command>, which can be an IPv4 or IPv6
+           address.  An <command>ip_addr</command> of <literal>*</literal>
+           (asterisk) is
+           interpreted as the IPv4 wildcard address; connections will be
+           accepted on any of the system's IPv4 addresses.
+           To listen on the IPv6 wildcard address,
+           use an <command>ip_addr</command> of <literal>::</literal>.
+         </para>
 
-       <para>
-         If no port is specified, port 80 is used for HTTP channels.
-         The asterisk "<literal>*</literal>" cannot be used for
-         <command>ip_port</command>.
-       </para>
+         <para>
+           If no port is specified, port 80 is used for HTTP channels.
+           The asterisk "<literal>*</literal>" cannot be used for
+           <command>ip_port</command>.
+         </para>
 
-       <para>
-         The attempt of opening a statistics channel is
-         restricted by the optional <command>allow</command> clause.
-         Connections to the statistics channel are permitted based on the
-         <command>address_match_list</command>.
-         If no <command>allow</command> clause is present,
-         <command>named</command> accepts connection
-         attempts from any address; since the statistics may
-         contain sensitive internal information, it is highly
-         recommended to restrict the source of connection requests
-         appropriately.
-       </para>
+         <para>
+           The attempt of opening a statistics channel is
+           restricted by the optional <command>allow</command> clause.
+           Connections to the statistics channel are permitted based on the
+           <command>address_match_list</command>.
+           If no <command>allow</command> clause is present,
+           <command>named</command> accepts connection
+           attempts from any address; since the statistics may
+           contain sensitive internal information, it is highly
+           recommended to restrict the source of connection requests
+           appropriately.
+         </para>
 
-       <para>
-         If no <command>statistics-channels</command> statement is present,
-         <command>named</command> will not open any communication channels.
-       </para>
+         <para>
+           If no <command>statistics-channels</command> statement is present,
+           <command>named</command> will not open any communication channels.
+         </para>
 
-       <para>
-         The statistics are available in various formats and views
-         depending on the URI used to access them.  For example, if
-         the statistics channel is configured to listen on 127.0.0.1
-         port 8888, then the statistics are accessible in XML format at
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/">http://127.0.0.1:8888/</link> or
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml">http://127.0.0.1:8888/xml</link>. A CSS file is
-         included which can format the XML statistics into tables
-         when viewed with a stylesheet-capable browser, and into
-         charts and graphs using the Google Charts API when using a
-         javascript-capable browser.
-       </para>
+         <para>
+           The statistics are available in various formats and views
+           depending on the URI used to access them.  For example, if
+           the statistics channel is configured to listen on 127.0.0.1
+           port 8888, then the statistics are accessible in XML format at
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/">http://127.0.0.1:8888/</link> or
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml">http://127.0.0.1:8888/xml</link>. A CSS file is
+           included which can format the XML statistics into tables
+           when viewed with a stylesheet-capable browser, and into
+           charts and graphs using the Google Charts API when using a
+           javascript-capable browser.
+         </para>
 
-       <para>
-         Broken-out subsets of the statistics can be viewed at
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml/v3/status">http://127.0.0.1:8888/xml/v3/status</link>
-         (server uptime and last reconfiguration time),
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml/v3/server">http://127.0.0.1:8888/xml/v3/server</link>
-         (server and resolver statistics),
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml/v3/zones">http://127.0.0.1:8888/xml/v3/zones</link>
-         (zone statistics),
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml/v3/net">http://127.0.0.1:8888/xml/v3/net</link>
-         (network status and socket statistics),
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml/v3/mem">http://127.0.0.1:8888/xml/v3/mem</link>
-         (memory manager statistics),
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml/v3/tasks">http://127.0.0.1:8888/xml/v3/tasks</link>
-         (task manager statistics), and
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml/v3/traffic">http://127.0.0.1:8888/xml/v3/traffic</link>
-         (traffic sizes).
-       </para>
+         <para>
+           Broken-out subsets of the statistics can be viewed at
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml/v3/status">http://127.0.0.1:8888/xml/v3/status</link>
+           (server uptime and last reconfiguration time),
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml/v3/server">http://127.0.0.1:8888/xml/v3/server</link>
+           (server and resolver statistics),
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml/v3/zones">http://127.0.0.1:8888/xml/v3/zones</link>
+           (zone statistics),
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml/v3/net">http://127.0.0.1:8888/xml/v3/net</link>
+           (network status and socket statistics),
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml/v3/mem">http://127.0.0.1:8888/xml/v3/mem</link>
+           (memory manager statistics),
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml/v3/tasks">http://127.0.0.1:8888/xml/v3/tasks</link>
+           (task manager statistics), and
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/xml/v3/traffic">http://127.0.0.1:8888/xml/v3/traffic</link>
+           (traffic sizes).
+         </para>
 
-       <para>
-         The full set of statistics can also be read in JSON format at
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json">http://127.0.0.1:8888/json</link>,
-         with the broken-out subsets at
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json/v1/status">http://127.0.0.1:8888/json/v1/status</link>
-         (server uptime and last reconfiguration time),
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json/v1/server">http://127.0.0.1:8888/json/v1/server</link>
-         (server and resolver statistics),
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json/v1/zones">http://127.0.0.1:8888/json/v1/zones</link>
-         (zone statistics),
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json/v1/net">http://127.0.0.1:8888/json/v1/net</link>
-         (network status and socket statistics),
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json/v1/mem">http://127.0.0.1:8888/json/v1/mem</link>
-         (memory manager statistics),
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json/v1/tasks">http://127.0.0.1:8888/json/v1/tasks</link>
-         (task manager statistics), and
-         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json/v1/traffic">http://127.0.0.1:8888/json/v1/traffic</link>
-         (traffic sizes).
-       </para>
-      </section>
+         <para>
+           The full set of statistics can also be read in JSON format at
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json">http://127.0.0.1:8888/json</link>,
+           with the broken-out subsets at
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json/v1/status">http://127.0.0.1:8888/json/v1/status</link>
+           (server uptime and last reconfiguration time),
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json/v1/server">http://127.0.0.1:8888/json/v1/server</link>
+           (server and resolver statistics),
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json/v1/zones">http://127.0.0.1:8888/json/v1/zones</link>
+           (zone statistics),
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json/v1/net">http://127.0.0.1:8888/json/v1/net</link>
+           (network status and socket statistics),
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json/v1/mem">http://127.0.0.1:8888/json/v1/mem</link>
+           (memory manager statistics),
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json/v1/tasks">http://127.0.0.1:8888/json/v1/tasks</link>
+           (task manager statistics), and
+           <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://127.0.0.1:8888/json/v1/traffic">http://127.0.0.1:8888/json/v1/traffic</link>
+           (traffic sizes).
+         </para>
+       </section>
 
-       <section xml:id="trusted-keys"><info><title><command>trusted-keys</command> Statement Grammar</title></info>
-       <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="trusted-keys.grammar.xml"/>
+       <section xml:id="dnssec_keys"><info><title><command>dnssec-keys</command> Statement Grammar</title></info>
+       <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dnssec-keys.grammar.xml"/>
        </section>
-       <section xml:id="trusted_keys"><info><title><command>trusted-keys</command> Statement Definition
+       <section xml:id="dnssec-keys"><info><title><command>dnssec-keys</command> Statement Definition
            and Usage</title></info>
 
          <para>
-           The <command>trusted-keys</command> statement defines
-           DNSSEC security roots. DNSSEC is described in <xref linkend="DNSSEC"/>. A security root is defined when the
-           public key for a non-authoritative zone is known, but
-           cannot be securely obtained through DNS, either because
-           it is the DNS root zone or because its parent zone is
-           unsigned.  Once a key has been configured as a trusted
-           key, it is treated as if it had been validated and
-           proven secure. The resolver attempts DNSSEC validation
-           on all DNS data in subdomains of a security root.
+           The <command>dnssec-keys</command> statement defines DNSSEC
+           trust anchors.  DNSSEC is described in <xref linkend="DNSSEC"/>.
          </para>
          <para>
-           All keys (and corresponding zones) listed in
-           <command>trusted-keys</command> are deemed to exist regardless
-           of what parent zones say.  Similarly for all keys listed in
-           <command>trusted-keys</command> only those keys are
-           used to validate the DNSKEY RRset.  The parent's DS RRset
-           will not be used.
+           A trust anchor is defined when the public key for
+           a non-authoritative zone is known, but cannot be securely
+           obtained through DNS, either because it is the DNS root zone
+           or because its parent zone is unsigned.  Once a key has been
+           configured as a trust anchor, it is treated as if it had
+           been validated and proven secure.
          </para>
          <para>
-           The <command>trusted-keys</command> statement can contain
+           The resolver attempts DNSSEC validation on all DNS data
+           in subdomains of configured trust anchors.  (Validation below
+           specified names can be temporarily disabled by using
+           <command>rndc nta</command>, or permanently disabled with
+           the <command>validate-except</command> option).
+         </para>
+         <para>
+           All keys listed in <command>dnssec-keys</command>, and
+           their corresponding zones, are deemed to exist regardless
+           of what parent zones say.   Only keys configured as trust anchors
+           are used to validate the DNSKEY RRset for the corresponding
+           name.  The parent's DS RRset will not be used.
+         </para>
+         <para>
+           The <command>dnssec-keys</command> statement can contain
            multiple key entries, each consisting of the key's
-           domain name, flags, protocol, algorithm, and the Base64
-           representation of the key data.
-           Spaces, tabs, newlines and carriage returns are ignored
+           domain name, followed by the <command>static-key</command> or
+           <command>initial-key</command> keyword, then the key's flags,
+           protocol, algorithm, and the Base64 representation of the key
+           data.  Spaces, tabs, newlines and carriage returns are ignored
            in the key data, so the configuration may be split up into
            multiple lines.
          </para>
          <para>
-           <command>trusted-keys</command> may be set at the top level
+           <command>dnssec-keys</command> may be set at the top level
            of <filename>named.conf</filename> or within a view.  If it is
-           set in both places, they are additive: keys defined at the top
-           level are inherited by all views, but keys defined in a view
-           are only used within that view.
+           set in both places, the configurations are additive: keys
+           defined at the top level are inherited by all views, but keys
+           defined in a view are only used within that view.
          </para>
          <para>
-           Validation below specified names can be temporarily disabled
-           by using <command>rndc nta</command>.
-         </para>
-       </section>
-
-       <section xml:id="managed_keys"><info><title><command>managed-keys</command> Statement Grammar</title></info>
-       <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="managed-keys.grammar.xml"/>
-       </section>
-       <section xml:id="managed-keys"><info><title><command>managed-keys</command> Statement Definition
-           and Usage</title></info>
-
-         <para>
-           The <command>managed-keys</command> statement, like
-           <command>trusted-keys</command>, defines DNSSEC
-           security roots.  The difference is that
-           <command>managed-keys</command> can be kept up to date
-           automatically, without intervention from the resolver
-           operator.
+           <command>dnssec-keys</command> entries can be configured with
+           two keywords: <command>static-key</command> or
+           <command>initial-key</command>.  Keys configured with
+           <command>static-key</command> are immutable,
+           while keys configured with <command>initial-key</command>
+           can be kept up to date automatically, without intervention
+           from the resolver operator. (<command>static-key</command>
+           keys are identical to keys configured using the deprecated
+           <command>trusted-keys</command> statement.)
          </para>
          <para>
            Suppose, for example, that a zone's key-signing
            key was compromised, and the zone owner had to revoke and
-           replace the key.  A resolver which had the old key in a
-           <command>trusted-keys</command> statement would be
+           replace the key.  A resolver which had the original key
+           configured as a <command>static-key</command> would be
            unable to validate this zone any longer; it would
            reply with a SERVFAIL response code.  This would
            continue until the resolver operator had updated the
-           <command>trusted-keys</command> statement with the new key.
+           <command>dnssec-keys</command> statement with the new key.
          </para>
          <para>
-           If, however, the zone were listed in a
-           <command>managed-keys</command> statement instead, then the
-           zone owner could add a "stand-by" key to the zone in advance.
+           If, however, the trust anchor had been configured with
+           <command>initial-key</command> instead, then the
+           zone owner could add a "stand-by" key to their zone in advance.
            <command>named</command> would store the stand-by key, and
            when the original key was revoked, <command>named</command>
            would be able to transition smoothly to the new key.  It would
            also recognize that the old key had been revoked, and cease
            using that key to validate answers, minimizing the damage that
-           the compromised key could do.
-         </para>
-         <para>
-           A <command>managed-keys</command> statement contains a list of
-           the keys to be managed, along with information about how the
-           keys are to be initialized for the first time.  The only
-           initialization method currently supported is
-           <literal>initial-key</literal>.
-           This means the <command>managed-keys</command> statement must
-           contain a copy of the initializing key.  (Future releases may
-           allow keys to be initialized by other methods, eliminating this
-           requirement.)
-         </para>
-         <para>
-           Consequently, a <command>managed-keys</command> statement
-           appears similar to a <command>trusted-keys</command>, differing
-           in the presence of the second field, containing the keyword
-           <literal>initial-key</literal>.  The difference is, whereas the
-           keys listed in a <command>trusted-keys</command> continue to be
-           trusted until they are removed from
-           <filename>named.conf</filename>, an initializing key listed
-           in a <command>managed-keys</command> statement is only trusted
-           <emphasis>once</emphasis>: for as long as it takes to load the
-           managed key database and start the RFC 5011 key maintenance
-           process.
-         </para>
-         <para>
-           The first time <command>named</command> runs with a managed key
-           configured in <filename>named.conf</filename>, it fetches the
+           the compromised key could do. This is the process used to
+           keep the ICANN root DNSSEC key up to date.
+         </para>
+         <para>
+           Whereas <command>static-key</command>
+           keys continue to be trusted until they are removed from
+           <filename>named.conf</filename>, an
+           <command>initial-key</command> is only trusted
+           <emphasis>once</emphasis>: for as long as it
+           takes to load the managed key database and start the RFC 5011
+           key maintenance process.
+         </para>
+         <para>
+           The first time <command>named</command> runs with an
+           <command>initial-key</command> configured in
+           <filename>named.conf</filename>, it fetches the
            DNSKEY RRset directly from the zone apex, and validates it
-           using the key specified in the <command>managed-keys</command>
-           statement.  If the DNSKEY RRset is validly signed, then it is
+           using the key specified in <command>dnssec-keys</command>.
+           If the DNSKEY RRset is validly signed, then it is
            used as the basis for a new managed keys database.
          </para>
          <para>
            From that point on, whenever <command>named</command> runs, it
-           sees the <command>managed-keys</command> statement, checks to
+           sees the <command>initial-key</command> listed in
+           <command>dnssec-keys</command>, checks to
            make sure RFC 5011 key maintenance has already been initialized
            for the specified domain, and if so, it simply moves on.  The
-           key specified in the <command>managed-keys</command>
-           statement is not used to validate answers; it has been
-           superseded by the key or keys stored in the managed keys database.
+           key specified in the <command>dnssec-keys</command>
+           statement is not used to validate answers; it is
+           superseded by the key or keys stored in the managed keys
+           database.
          </para>
          <para>
-           The next time <command>named</command> runs after a name
-           has been <emphasis>removed</emphasis> from the
-           <command>managed-keys</command> statement, the corresponding
+           The next time <command>named</command> runs after an
+           <command>initial-key</command> has been
+           <emphasis>removed</emphasis> from the
+           <command>dnssec-keys</command> statement (or changed to
+           a <command>static-key</command>), the corresponding
            zone will be removed from the managed keys database,
            and RFC 5011 key maintenance will no longer be used for that
            domain.
@@ -10983,8 +10991,8 @@ example.com                 CNAME   rpz-tcp-only.
          <para>
            If the <command>dnssec-validation</command> option is
            set to <userinput>auto</userinput>, <command>named</command>
-           will automatically initialize a managed key for the
-           root zone.  The key that is used to initialize the key
+           will automatically initialize an <command>initial-key</command>
+           for the root zone.  The key that is used to initialize the key
            maintenance process is stored in <filename>bind.keys</filename>;
            the location of this file can be overridden with the
            <command>bindkeys-file</command> option. As a fallback
@@ -10994,6 +11002,32 @@ example.com                 CNAME   rpz-tcp-only.
          </para>
        </section>
 
+       <section xml:id="managed-keys"><info><title><command>managed-keys</command> Statement Grammar</title></info>
+       <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="managed-keys.grammar.xml"/>
+       </section>
+       <section xml:id="managed_keys"><info><title><command>managed-keys</command> Statement Definition
+           and Usage</title></info>
+
+         <para>
+           The <command>managed-keys</command> statement is
+           identical to the <command>dnssec-keys</command>, and is
+           retained for backward compatibility.
+         </para>
+       </section>
+
+       <section xml:id="trusted-keys"><info><title><command>trusted-keys</command> Statement Grammar</title></info>
+       <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="trusted-keys.grammar.xml"/>
+       </section>
+       <section xml:id="trusted_keys"><info><title><command>trusted-keys</command> Statement Definition
+           and Usage</title></info>
+
+         <para>
+           The <command>trusted-keys</command> statement has been
+           deprecated in favor of <xref linkend="dnssec_keys"/>
+           with the <command>static</command> keyword.
+         </para>
+       </section>
+
        <section xml:id="view_statement_grammar"><info><title><command>view</command> Statement Grammar</title></info>
 
 <programlisting><command>view</command> <replaceable>view_name</replaceable> [ <replaceable>class</replaceable> ] <command>{</command>
diff --git a/doc/arm/dnssec-keys.grammar.xml b/doc/arm/dnssec-keys.grammar.xml
new file mode 100644 (file)
index 0000000..4f5d238
--- /dev/null
@@ -0,0 +1,18 @@
+<!--
+ - Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+ -
+ - This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ -
+ - See the COPYRIGHT file distributed with this work for additional
+ - information regarding copyright ownership.
+-->
+
+<!-- Generated by doc/misc/docbook-options.pl -->
+
+<programlisting>
+<command>dnssec-keys</command> { <replaceable>string</replaceable> ( static-key |
+    <command>initial-key</command> ) <replaceable>integer</replaceable> <replaceable>integer</replaceable> <replaceable>integer</replaceable>
+    <replaceable>quoted_string</replaceable>; ... };
+</programlisting>
index 4562f6a7c9ef616be631454462f47ae8d8efe1ba..19230552fb94520f059091940307b83ba079824b 100644 (file)
@@ -132,10 +132,14 @@ $ <userinput>make</userinput>
       parameters. By default the path to this configuration file is
       <filename>/etc/dns.conf</filename>.  This module is very experimental
       and the configuration syntax or library interfaces may change in
-      future versions. Currently, only the <command>trusted-keys</command>
-      statement is supported, whose syntax is the same as the same
-      statement in <filename>named.conf</filename>. (See
-      <xref linkend="trusted-keys"/> for details.)
+      future versions.  Currently, only static key configuration is supported.
+      <command>managed-keys</command> and <command>trusted-keys</command>
+      statements are parsed exactly as they are in
+      <filename>named.conf</filename>, except that all
+      <command>managed-keys</command> entries will be treated as
+      if they were configured with the <command>static-key</command>
+      keyword, even if they are configured with <command>initial-key</command>.
+      (See <xref linkend="managed-keys"/> for syntax details.)
     </para>
   </section>
   <section>
index d79f27fe06331378a980b257224722d059e65fbd..d1aaee3c37c6c2d4d6c0cd7bfc3eb734d2798042 100644 (file)
@@ -12,6 +12,7 @@
 <!-- Generated by doc/misc/docbook-options.pl -->
 
 <programlisting>
-<command>managed-keys</command> { <replaceable>string</replaceable> <replaceable>string</replaceable> <replaceable>integer</replaceable>
-    <replaceable>integer</replaceable> <replaceable>integer</replaceable> <replaceable>quoted_string</replaceable>; ... };
+<command>managed-keys</command> { <replaceable>string</replaceable> ( static-key |
+    <command>initial-key</command> ) <replaceable>integer</replaceable> <replaceable>integer</replaceable> <replaceable>integer</replaceable>
+    <replaceable>quoted_string</replaceable>; ... };
 </programlisting>
index ba45a6c1c001bfea8cec9efa7ac537eea3048539..e4ba67ab6c7d004bf84d25d05541fdb8aff5f325 100644 (file)
     <!-- TODO: command tag is overloaded for configuration and executables -->
     <para>To configure a validating resolver to use RFC 5011 to
     maintain a trust anchor, configure the trust anchor using a
-    <command>managed-keys</command> statement. Information about
+    <command>dnssec-keys</command> statement and the
+    <command>initial-key</command> keyword. Information about
     this can be found in
-    <xref linkend="managed-keys"/>.</para>
-    <!-- TODO: managed-keys examples
-also in DNSSEC section above here in ARM -->
+    <xref linkend="dnssec-keys"/>.</para>
   </section>
   <section><info><title>Authoritative Server</title></info>
 
index 7439ee3e4fd889e92f3918f71aa350a26e3180bb..850bde3d5c0f5809af81150259d8f3deb6f75bad 100644 (file)
@@ -89,7 +89,6 @@
        <command>dnsrps-options</command> { <replaceable>unspecified-text</replaceable> };
        <command>dnssec-accept-expired</command> <replaceable>boolean</replaceable>;
        <command>dnssec-dnskey-kskonly</command> <replaceable>boolean</replaceable>;
-       <command>dnssec-enable</command> <replaceable>boolean</replaceable>;
        <command>dnssec-loadkeys-interval</command> <replaceable>integer</replaceable>;
        <command>dnssec-lookaside</command> ( <replaceable>string</replaceable> trust-anchor
            <replaceable>string</replaceable> | auto | no );
        <command>resolver-retry-interval</command> <replaceable>integer</replaceable>;
        <command>response-padding</command> { <replaceable>address_match_element</replaceable>; ... } block-size
            <replaceable>integer</replaceable>;
-       <command>response-policy</command> { zone <replaceable>string</replaceable> [ log <replaceable>boolean</replaceable> ] [ max-policy-ttl
-           <replaceable>ttlval</replaceable> ] [ min-update-interval <replaceable>ttlval</replaceable> ] [ policy ( cname |
-           <command>disabled</command> | drop | given | no-op | nodata | nxdomain | passthru
-           | tcp-only <replaceable>quoted_string</replaceable> ) ] [ recursive-only <replaceable>boolean</replaceable> ] [
-           <command>nsip-enable</command> <replaceable>boolean</replaceable> ] [ nsdname-enable <replaceable>boolean</replaceable> ]; ... } [
+       <command>response-policy</command> { zone <replaceable>string</replaceable> [ add-soa <replaceable>boolean</replaceable> ] [ log
+           <replaceable>boolean</replaceable> ] [ max-policy-ttl <replaceable>ttlval</replaceable> ] [ min-update-interval
+           <replaceable>ttlval</replaceable> ] [ policy ( cname | disabled | drop | given | no-op |
+           <command>nodata</command> | nxdomain | passthru | tcp-only <replaceable>quoted_string</replaceable> ) ] [
+           <command>recursive-only</command> <replaceable>boolean</replaceable> ] [ nsip-enable <replaceable>boolean</replaceable> ] [
+           <command>nsdname-enable</command> <replaceable>boolean</replaceable> ]; ... } [ add-soa <replaceable>boolean</replaceable> ] [
            <command>break-dnssec</command> <replaceable>boolean</replaceable> ] [ max-policy-ttl <replaceable>ttlval</replaceable> ] [
            <command>min-update-interval</command> <replaceable>ttlval</replaceable> ] [ min-ns-dots <replaceable>integer</replaceable> ] [
            <command>nsip-wait-recurse</command> <replaceable>boolean</replaceable> ] [ qname-wait-recurse <replaceable>boolean</replaceable> ]
index b0bd3d79f8c6adfab8478d18fe78683bc69209ba..2a0b6e9454f91e6fe540fb4dda062959b4c55189 100644 (file)
@@ -12,6 +12,7 @@
 <!-- Generated by doc/misc/docbook-options.pl -->
 
 <programlisting>
-<command>trusted-keys</command> { <replaceable>string</replaceable> <replaceable>integer</replaceable> <replaceable>integer</replaceable>
-    <replaceable>integer</replaceable> <replaceable>quoted_string</replaceable>; ... };
+<command>trusted-keys</command> { <replaceable>string</replaceable> <replaceable>integer</replaceable>
+    <replaceable>integer</replaceable> <replaceable>integer</replaceable>
+    <replaceable>quoted_string</replaceable>; ... };, deprecated
 </programlisting>
index 21084d5591775114565a9b712f8b434645dea5fe..0483f587b8aeaefd137f532ac1afb3ee6e65d776 100644 (file)
@@ -71,5 +71,6 @@ docbook: options
        ${PERL} docbook-grammars.pl options options > ${top_srcdir}/doc/arm/options.grammar.xml
        ${PERL} docbook-grammars.pl options server > ${top_srcdir}/doc/arm/server.grammar.xml
        ${PERL} docbook-grammars.pl options statistics-channels > ${top_srcdir}/doc/arm/statistics-channels.grammar.xml
-       ${PERL} docbook-grammars.pl options trusted-keys > ${top_srcdir}/doc/arm/trusted-keys.grammar.xml
+       ${PERL} docbook-grammars.pl options dnssec-keys > ${top_srcdir}/doc/arm/dnssec-keys.grammar.xml
        ${PERL} docbook-grammars.pl options managed-keys > ${top_srcdir}/doc/arm/managed-keys.grammar.xml
+       ${PERL} docbook-grammars.pl options trusted-keys > ${top_srcdir}/doc/arm/trusted-keys.grammar.xml
index 25a6d9927f0370702c9ba1b934547d76d135112d..fdb9c39c14488e21006e9442323f79e283ad1732 100644 (file)
@@ -128,8 +128,9 @@ while (<FH>) {
 
        s{ // not configured}{};
        s{ // non-operational}{};
-       s{ // may occur multiple times}{};
+       s{ (// )*may occur multiple times}{};
        s{<([a-z0-9_-]+)>}{<replaceable>$1</replaceable>}g;
+       s{ // deprecated,*}{// deprecated};
        s{[[]}{[}g;
        s{[]]}{]}g;
        s{        }{\t}g;
@@ -137,10 +138,24 @@ while (<FH>) {
                my $HEADING = uc $1;
                print <<END;
   <refsection><info><title>$HEADING</title></info>
+END
+
+                if ($1 eq "trusted-keys") {
+                        print <<END;
+  <para>Deprecated - see DNSSEC-KEYS.</para>
+END
+                }
 
+                if ($1 eq "managed-keys") {
+                        print <<END;
+  <para>See DNSSEC-KEYS.</para>
+END
+                }
+
+               print <<END;
     <literallayout class="normal">
 END
-       }
+        }
 
        if (m{^\s*$} && !$blank) {
                $blank = 1;
index f9774d0640378259d9464d61714e7d81ed009228..216d85af790f2c5be59714517f90d421a0b967d0 100644 (file)
@@ -21,6 +21,10 @@ dlz <string> {
         search <boolean>;
 }; // may occur multiple times
 
+dnssec-keys { <string> ( static-key |
+    initial-key ) <integer> <integer> <integer>
+    <quoted_string>; ... }; // may occur multiple times
+
 dyndb <string> <quoted_string> {
     <unspecified-text> }; // may occur multiple times
 
@@ -47,8 +51,9 @@ logging {
 
 lwres { <unspecified-text> }; // obsolete, may occur multiple times
 
-managed-keys { <string> <string> <integer>
-    <integer> <integer> <quoted_string>; ... }; // may occur multiple times
+managed-keys { <string> ( static-key |
+    initial-key ) <integer> <integer> <integer>
+    <quoted_string>; ... }; // may occur multiple times
 
 masters <string> [ port <integer> ] [ dscp
     <integer> ] { ( <masters> | <ipv4_address> [
@@ -207,7 +212,7 @@ options {
         listen-on-v6 [ port <integer> ] [ dscp
             <integer> ] {
             <address_match_element>; ... }; // may occur multiple times
-        lmdb-mapsize <sizeval>; // non-operational
+        lmdb-mapsize <sizeval>;
         lock-file ( <quoted_string> | none );
         maintain-ixfr-base <boolean>; // ancient
         managed-keys-directory <quoted_string>;
@@ -434,8 +439,9 @@ statistics-channels {
             } ]; // may occur multiple times
 }; // may occur multiple times
 
-trusted-keys { <string> <integer> <integer>
-    <integer> <quoted_string>; ... }; // may occur multiple times
+trusted-keys { <string> <integer>
+    <integer> <integer>
+    <quoted_string>; ... }; // may occur multiple times, deprecated
 
 view <string> [ <class> ] {
         acache-cleaning-interval <integer>; // obsolete
@@ -513,6 +519,9 @@ view <string> [ <class> ] {
         dnssec-accept-expired <boolean>;
         dnssec-dnskey-kskonly <boolean>;
         dnssec-enable <boolean>; // obsolete
+        dnssec-keys { <string> ( static-key |
+            initial-key ) <integer> <integer>
+            <integer> <quoted_string>; ... }; // may occur multiple times
         dnssec-loadkeys-interval <integer>;
         dnssec-lookaside ( <string> trust-anchor
             <string> | auto | no ); // may occur multiple times
@@ -553,11 +562,11 @@ view <string> [ <class> ] {
         }; // may occur multiple times
         key-directory <quoted_string>;
         lame-ttl <ttlval>;
-        lmdb-mapsize <sizeval>; // non-operational
+        lmdb-mapsize <sizeval>;
         maintain-ixfr-base <boolean>; // ancient
-        managed-keys { <string> <string>
-            <integer> <integer> <integer>
-            <quoted_string>; ... }; // may occur multiple times
+        managed-keys { <string> ( static-key |
+            initial-key ) <integer> <integer>
+            <integer> <quoted_string>; ... }; // may occur multiple times
         masterfile-format ( map | raw | text );
         masterfile-style ( full | relative );
         match-clients { <address_match_element>; ... };
@@ -720,9 +729,10 @@ view <string> [ <class> ] {
         transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * )
             ] [ dscp <integer> ];
         trust-anchor-telemetry <boolean>; // experimental
-        trusted-keys { <string> <integer>
-            <integer> <integer> <quoted_string>;
-            ... }; // may occur multiple times
+        trusted-keys { <string>
+            <integer> <integer>
+            <integer>
+            <quoted_string>; ... }; // may occur multiple times, deprecated
         try-tcp-refresh <boolean>;
         update-check-ksk <boolean>;
         use-alt-transfer-source <boolean>;
index 97c0c40985ab521a80b830541a0f9dae61ae9fde..6681446a7a513c9683a4fa43d8439cd02b754d92 100644 (file)
@@ -4365,10 +4365,10 @@ sync_keyzone(dns_zone_t *zone, dns_db_t *db) {
 
        /*
         * Walk the zone DB.  If we find any keys whose names are no longer
-        * in managed-keys (or *are* in trusted-keys, meaning they are
-        * permanent and not RFC5011-maintained), delete them from the
-        * zone.  Otherwise call load_secroots(), which loads keys into
-        * secroots as appropriate.
+        * in managed-keys as initial-keys (or which are now configured as
+        * static keys, meaning they are permanent and not RFC5011-maintained),
+        * delete them from the zone.  Otherwise call load_secroots(), which
+        * loads keys into secroots as appropriate.
         */
        dns_rriterator_init(&rrit, db, ver, 0);
        for (result = dns_rriterator_first(&rrit);
index ff2bd91ac1cd73498f1c1b9a34d2168f7cebd996..67c539cbfdb4f935007517e86a135253d61b64e1 100644 (file)
 ./doc/arm/controls.grammar.xml                 SGML    2018,2019
 ./doc/arm/delegation-only.zoneopt.xml          SGML    2018,2019
 ./doc/arm/dlz.xml                              SGML    2012,2013,2014,2015,2016,2018,2019
+./doc/arm/dnssec-keys.grammar.xml              SGML    2019
 ./doc/arm/dnssec.xml                           SGML    2010,2011,2015,2016,2017,2018,2019
 ./doc/arm/dyndb.xml                            SGML    2015,2016,2018,2019
 ./doc/arm/forward.zoneopt.xml                  SGML    2018,2019