summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Markwalder <tmark@isc.org>2014-05-19 17:08:08 +0200
committerThomas Markwalder <tmark@isc.org>2014-05-19 17:08:08 +0200
commita5f18aac17c3a28920ca31d5dfc6b0e6c30a3c34 (patch)
treeaa96a081ba81e0a973c9f8e6609ee1a4c6d1dadf
parent[3432] Changed algorithm strings to match dnsssec-keygen labels (diff)
downloadkea-a5f18aac17c3a28920ca31d5dfc6b0e6c30a3c34.tar.xz
kea-a5f18aac17c3a28920ca31d5dfc6b0e6c30a3c34.zip
[3432] Updated Admin guide for TSIG key configuration
Updated the admin guilde and minor change to dhcp-ddns.spec file.
-rw-r--r--doc/guide/bind10-guide.xml96
-rw-r--r--src/bin/d2/d2_update_message.h4
-rw-r--r--src/bin/d2/dhcp-ddns.spec2
3 files changed, 70 insertions, 32 deletions
diff --git a/doc/guide/bind10-guide.xml b/doc/guide/bind10-guide.xml
index 44d804c7c1..273ce6c94c 100644
--- a/doc/guide/bind10-guide.xml
+++ b/doc/guide/bind10-guide.xml
@@ -5301,57 +5301,95 @@ corresponding values in the DHCP servers' "dhcp-ddns" configuration section.
<section id="d2-tsig-key-list-config">
<title>TSIG Key List</title>
-<note>
-<simpara>
- While this section may be displayed and edited using bindctl, the use
- of TSIG in actual communications between D2 and DNS servers is not yet
- implemented.
-</simpara>
-</note>
<para>
DDNS protocol can be conducted with or without TSIG as defined in
RFC 2845. This configuration section allows the administrator to
- define the dictionary of TSIG keys to may be used. To use TSIG
+ define the dictionary of TSIG keys which may be used. To use TSIG
when working with a specific DDNS Domain that key must be defined in
- the TSIG Key List and referenced by name in that domain's entry in
- the DDNS catalog.
+ the TSIG Key List and referenced by name in that domain's configuration
+ entry.
+
+ When the domain D2 has matched to a change request has a TSIG key
+ associated with it, D2 will use that key to sign DNS update messages
+ sent to and verify repsonses received from DNS server(s). For each TSIG
+ key required by the DNS servers that D2 will be working with there must
+ be a corresponding TSIG key in the TSIG Key list.
</para>
<para>
As one might gather from its name, this section is a list of
- TSIG keys. Each key has three parameters:
+ TSIG keys. Each entry describes a TSIG key used by one or
+ more DNS servers to authenticate requests and sign responses.
+ Each entry has three parameters:
<itemizedlist>
<listitem>
<simpara>
<command>name</command> &mdash;
- is a unique text label used to identify the this key within the
- list. It is this value that is used to specify which key (if any)
- should be used with a specific DNS server. So long as it is
- unique, its content is arbitrary. It cannot be blank.
+ is a unique text label used to identify this key within the
+ list. This value is used to specify which key (if any) should be
+ used when updating a specific domain. So long as it is unique its
+ content is arbitrary, although for clarity and ease of maintenance
+ it is recommended that it match the name used on the DNS server(s).
+ It cannot be blank.
</simpara>
</listitem>
<listitem>
<simpara>
<command>algorithm</command> &mdash;
specifies which hashing algorithm should be used with this
- key. This value is not currently used.
+ key. This value must specify the same algorithm used for the
+ key on the DNS server(s). The supported algorithms are listed below:
+ <itemizedlist>
+ <listitem>
+ <command>HMAC-MD5</command>
+ </listitem>
+ <listitem>
+ <command>HMAC-SHA1</command>
+ </listitem>
+ <listitem>
+ <command>HMAC-SHA224</command>
+ </listitem>
+ <listitem>
+ <command>HMAC-SHA256</command>
+ </listitem>
+ <listitem>
+ <command>HMAC-SHA384</command>
+ </listitem>
+ <listitem>
+ <command>HMAC-SHA512</command>
+ </listitem>
+ </itemizedlist>
+ This value is not case sensitive.
</simpara>
</listitem>
<listitem>
<simpara>
<command>secret</command> &mdash;
- is used to specify the shared secret key code for this key. This
- value is not currently used.
+ is used to specify the shared secret key code for this key. This value is
+ case sensitive and must exactly match the value specified on the DNS server(s).
+ This is a base64 encoded text value that can be located if dnssec public and
+ private key files.
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
- By default, the TSIG Key list is empty:
+ Suppose that a domain D2 will be updating is maintained by a BIND9 DNS server which
+ is using TSIG with that domain. Suppose further that the entry for the TSIG key in
+ BIND9's named.conf file looks like this:
+<screen>
+ :
+ key "key.four.example.com." {
+ algorithm hmac-sha224;
+ secret "bZEG7Ow8OgAUPfLWV3aAUQ==";
+ };
+ :
+</screen>
+ By default, the TSIG Key list is empty.
<screen>
<userinput>> config show DhcpDdns/tsig_keys</userinput>
DhcpDdns/tsig_keys [] list (default)
</screen>
- To create a new key in the list, one must first add a new key element:
+ So we must first create a new key in the list:
<screen>
<userinput>> config add DhcpDdns/tsig_keys</userinput>
</screen>
@@ -5359,17 +5397,19 @@ DhcpDdns/tsig_keys [] list (default)
<screen>
<userinput>> config show DhcpDdns/tsig_keys[0]</userinput>
DhcpDdns/tsig_keys[0]/name "" string (default)
-DhcpDdns/tsig_keys[0]/algorithm "hmac_md5" string (modified)
+DhcpDdns/tsig_keys[0]/algorithm "HMAC-MD5" string (modified)
DhcpDdns/tsig_keys[0]/secret "" string (default)
</screen>
- Populating the key name and secret, while accepting the default value
- for alogorithm:
+ Now we simple set all three values to match BIND9's key:
<screen>
-<userinput>> config set DhcpDdns/tsig_keys[0]/name "key1.example.com"</userinput>
-<userinput>> config set DhcpDdns/tsig_keys[0]/secret "123456789"</userinput>
+<userinput>> config set DhcpDdns/tsig_keys[0]/name "key.four.example.com"</userinput>
+<userinput>> config set DhcpDdns/tsig_keys[0]/algorithm "HMAC-SHA224"</userinput>
+<userinput>> config set DhcpDdns/tsig_keys[0]/secret "bZEG7Ow8OgAUPfLWV3aAUQ=="</userinput>
<userinput>> config commit</userinput>
</screen>
</para>
+ These steps would be repeated for each TSIG key needed. Note that the same TSIG key
+ can be used with more than one domain.
</section> <!-- "d2-tsig-key-list-config" -->
<section id="d2-forward-ddns-config">
@@ -5387,8 +5427,6 @@ DhcpDdns/forward_ddns/ddns_domains [] list (default)
</para>
<section id="add-forward-ddns-domain">
<title>Adding Forward DDNS Domains</title>
-
-
<para>
A forward DDNS Domain maps a forward DNS zone to a set of DNS servers
which maintain the forward DNS data for that zone. You will need one
@@ -5567,8 +5605,8 @@ DhcpDdns/reverse_ddns/ddns_domains [] list (default)
<simpara>
<command>key_name</command> &mdash;
If TSIG should be used with this domain's servers, then this
- value should be the name of the key from within the TSIG Key List
- to use. If the value is blank (the default), TSIG will not be
+ value should be the name of that key from the TSIG Key List.
+ If the value is blank (the default), TSIG will not be
used in DDNS conversations with this domain's servers. Currently
this value is not used as TSIG has not been implemented.
</simpara>
diff --git a/src/bin/d2/d2_update_message.h b/src/bin/d2/d2_update_message.h
index 09ff3449d3..c20677d754 100644
--- a/src/bin/d2/d2_update_message.h
+++ b/src/bin/d2/d2_update_message.h
@@ -304,9 +304,9 @@ public:
///
/// @param received_data buffer holding DNS Update message to be parsed.
/// @param bytes_received the number of bytes in received_data
- /// @param tsig_ctx A TSIG context that is to be used to verify the
+ /// @param tsig_context A TSIG context that is to be used to verify the
/// message. If NULL TSIG verification will not be attempted.
- void fromWire(const void* data, size_t datalen,
+ void fromWire(const void* received_data, size_t bytes_received,
dns::TSIGContext* const tsig_context = NULL);
//@}
diff --git a/src/bin/d2/dhcp-ddns.spec b/src/bin/d2/dhcp-ddns.spec
index b4240b1420..f173465882 100644
--- a/src/bin/d2/dhcp-ddns.spec
+++ b/src/bin/d2/dhcp-ddns.spec
@@ -34,7 +34,7 @@
"item_name": "tsig_key",
"item_type": "map",
"item_optional": false,
- "item_default": {"algorithm" : "hmac_md5"},
+ "item_default": {"algorithm" : "HMAC-MD5"},
"map_item_spec": [
{
"item_name": "name",