mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 14:07:59 +00:00
3001. [func] Added a default trust anchor for the root zone, which
can be switched on by setting "dnssec-validation auto;" in the named.conf options. [RT #21727]
This commit is contained in:
4
CHANGES
4
CHANGES
@@ -1,3 +1,7 @@
|
|||||||
|
3001. [func] Added a default trust anchor for the root zone, which
|
||||||
|
can be switched on by setting "dnssec-validation auto;"
|
||||||
|
in the named.conf options. [RT #21727]
|
||||||
|
|
||||||
3000. [bug] More TKEY/GSS fixes:
|
3000. [bug] More TKEY/GSS fixes:
|
||||||
- nsupdate can now get the default realm from
|
- nsupdate can now get the default realm from
|
||||||
the user's Kerberos principal
|
the user's Kerberos principal
|
||||||
|
@@ -3,19 +3,97 @@
|
|||||||
* From bind.keys 1.6 2010/06/20 07:15:28 marka Exp
|
* From bind.keys 1.6 2010/06/20 07:15:28 marka Exp
|
||||||
*/
|
*/
|
||||||
#define TRUSTED_KEYS "\
|
#define TRUSTED_KEYS "\
|
||||||
|
# The bind.keys file is used to override the built-in DNSSEC trust anchors\n\
|
||||||
|
# which are included as part of BIND 9. As of the current release, the only\n\
|
||||||
|
# trust anchors it contains are those for the DNS root zone (\".\"), and for\n\
|
||||||
|
# the ISC DNSSEC Lookaside Validation zone (\"dlv.isc.org\"). Trust anchors\n\
|
||||||
|
# for any other zones MUST be configured elsewhere; if they are configured\n\
|
||||||
|
# here, they will not be recognized or used by named.\n\
|
||||||
|
#\n\
|
||||||
|
# The built-in trust anchors are provided for convenience of configuration.\n\
|
||||||
|
# They are not activated within named.conf unless specifically switched on.\n\
|
||||||
|
# To use the built-in root key, set \"dnssec-validation auto;\" in\n\
|
||||||
|
# named.conf options. To use the built-in DLV key, set\n\
|
||||||
|
# \"dnssec-lookaside auto;\". Without these options being set,\n\
|
||||||
|
# the keys in this file are ignored.\n\
|
||||||
|
#\n\
|
||||||
|
# This file is NOT expected to be user-configured.\n\
|
||||||
|
#\n\
|
||||||
|
# These keys are current as of January 2011. If any key fails to\n\
|
||||||
|
# initialize correctly, it may have expired. In that event you should\n\
|
||||||
|
# replace this file with a current version. The latest version of\n\
|
||||||
|
# bind.keys can always be obtained from ISC at https://www.isc.org/bind-keys.\n\
|
||||||
|
\n\
|
||||||
trusted-keys {\n\
|
trusted-keys {\n\
|
||||||
# NOTE: This key is current as of October 2009.\n\
|
# ISC DLV: See https://www.isc.org/solutions/dlv for details.\n\
|
||||||
# If it fails to initialize correctly, it may have expired;\n\
|
# NOTE: This key is activated by setting \"dnssec-lookaside auto;\"\n\
|
||||||
# see https://www.isc.org/solutions/dlv for a replacement.\n\
|
# in named.conf.\n\
|
||||||
dlv.isc.org. 257 3 5 \"BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2 brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+ 1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5 ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt TDN0YUuWrBNh\";\n\
|
dlv.isc.org. 257 3 5 \"BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2\n\
|
||||||
|
brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+\n\
|
||||||
|
1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5\n\
|
||||||
|
ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk\n\
|
||||||
|
Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM\n\
|
||||||
|
QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt\n\
|
||||||
|
TDN0YUuWrBNh\";\n\
|
||||||
|
\n\
|
||||||
|
# ROOT KEY: See https://data.iana.org/root-anchors/root-anchors.xml\n\
|
||||||
|
# for current trust anchor information.\n\
|
||||||
|
# NOTE: This key is activated by setting \"dnssec-validation auto;\"\n\
|
||||||
|
# in named.conf.\n\
|
||||||
|
. 257 3 8 \"AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF\n\
|
||||||
|
FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX\n\
|
||||||
|
bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD\n\
|
||||||
|
X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz\n\
|
||||||
|
W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS\n\
|
||||||
|
Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq\n\
|
||||||
|
QxA+Uk1ihz0=\";\n\
|
||||||
};\n\
|
};\n\
|
||||||
"
|
"
|
||||||
|
|
||||||
#define MANAGED_KEYS "\
|
#define MANAGED_KEYS "\
|
||||||
|
# The bind.keys file is used to override the built-in DNSSEC trust anchors\n\
|
||||||
|
# which are included as part of BIND 9. As of the current release, the only\n\
|
||||||
|
# trust anchors it contains are those for the DNS root zone (\".\"), and for\n\
|
||||||
|
# the ISC DNSSEC Lookaside Validation zone (\"dlv.isc.org\"). Trust anchors\n\
|
||||||
|
# for any other zones MUST be configured elsewhere; if they are configured\n\
|
||||||
|
# here, they will not be recognized or used by named.\n\
|
||||||
|
#\n\
|
||||||
|
# The built-in trust anchors are provided for convenience of configuration.\n\
|
||||||
|
# They are not activated within named.conf unless specifically switched on.\n\
|
||||||
|
# To use the built-in root key, set \"dnssec-validation auto;\" in\n\
|
||||||
|
# named.conf options. To use the built-in DLV key, set\n\
|
||||||
|
# \"dnssec-lookaside auto;\". Without these options being set,\n\
|
||||||
|
# the keys in this file are ignored.\n\
|
||||||
|
#\n\
|
||||||
|
# This file is NOT expected to be user-configured.\n\
|
||||||
|
#\n\
|
||||||
|
# These keys are current as of January 2011. If any key fails to\n\
|
||||||
|
# initialize correctly, it may have expired. In that event you should\n\
|
||||||
|
# replace this file with a current version. The latest version of\n\
|
||||||
|
# bind.keys can always be obtained from ISC at https://www.isc.org/bind-keys.\n\
|
||||||
|
\n\
|
||||||
managed-keys {\n\
|
managed-keys {\n\
|
||||||
# NOTE: This key is current as of October 2009.\n\
|
# ISC DLV: See https://www.isc.org/solutions/dlv for details.\n\
|
||||||
# If it fails to initialize correctly, it may have expired;\n\
|
# NOTE: This key is activated by setting \"dnssec-lookaside auto;\"\n\
|
||||||
# see https://www.isc.org/solutions/dlv for a replacement.\n\
|
# in named.conf.\n\
|
||||||
dlv.isc.org. initial-key 257 3 5 \"BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2 brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+ 1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5 ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt TDN0YUuWrBNh\";\n\
|
dlv.isc.org. initial-key 257 3 5 \"BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2\n\
|
||||||
|
brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+\n\
|
||||||
|
1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5\n\
|
||||||
|
ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk\n\
|
||||||
|
Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM\n\
|
||||||
|
QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt\n\
|
||||||
|
TDN0YUuWrBNh\";\n\
|
||||||
|
\n\
|
||||||
|
# ROOT KEY: See https://data.iana.org/root-anchors/root-anchors.xml\n\
|
||||||
|
# for current trust anchor information.\n\
|
||||||
|
# NOTE: This key is activated by setting \"dnssec-validation auto;\"\n\
|
||||||
|
# in named.conf.\n\
|
||||||
|
. initial-key 257 3 8 \"AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF\n\
|
||||||
|
FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX\n\
|
||||||
|
bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD\n\
|
||||||
|
X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz\n\
|
||||||
|
W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS\n\
|
||||||
|
Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq\n\
|
||||||
|
QxA+Uk1ihz0=\";\n\
|
||||||
};\n\
|
};\n\
|
||||||
"
|
"
|
||||||
|
@@ -14,12 +14,12 @@
|
|||||||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
# PERFORMANCE OF THIS SOFTWARE.
|
# PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
# $Id: bindkeys.pl,v 1.5 2010/06/20 23:46:45 tbox Exp $
|
# $Id: bindkeys.pl,v 1.6 2011/01/03 23:45:07 each Exp $
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
my $rev = '$Id: bindkeys.pl,v 1.5 2010/06/20 23:46:45 tbox Exp $';
|
my $rev = '$Id: bindkeys.pl,v 1.6 2011/01/03 23:45:07 each Exp $';
|
||||||
$rev =~ s/\$//g;
|
$rev =~ s/\$//g;
|
||||||
$rev =~ s/,v//g;
|
$rev =~ s/,v//g;
|
||||||
$rev =~ s/Id: //;
|
$rev =~ s/Id: //;
|
||||||
@@ -31,7 +31,7 @@ while (<>) {
|
|||||||
chomp;
|
chomp;
|
||||||
if (/\/\* .Id:.* \*\//) {
|
if (/\/\* .Id:.* \*\//) {
|
||||||
$keys = $_;
|
$keys = $_;
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
s/\"/\\\"/g;
|
s/\"/\\\"/g;
|
||||||
s/$/\\n\\/;
|
s/$/\\n\\/;
|
||||||
@@ -48,7 +48,7 @@ print "/*\n * Generated by $rev \n * From $keys\n */\n";
|
|||||||
my $mkey = '#define MANAGED_KEYS "\\' . "\n" . $lines . "\"\n";
|
my $mkey = '#define MANAGED_KEYS "\\' . "\n" . $lines . "\"\n";
|
||||||
|
|
||||||
$lines =~ s/managed-keys/trusted-keys/;
|
$lines =~ s/managed-keys/trusted-keys/;
|
||||||
$lines =~ s/\s+initial-key//;
|
$lines =~ s/\s+initial-key//g;
|
||||||
my $tkey = '#define TRUSTED_KEYS "\\' . "\n" . $lines . "\"\n";
|
my $tkey = '#define TRUSTED_KEYS "\\' . "\n" . $lines . "\"\n";
|
||||||
|
|
||||||
print $tkey;
|
print $tkey;
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: server.c,v 1.591 2010/12/18 01:56:19 each Exp $ */
|
/* $Id: server.c,v 1.592 2011/01/03 23:45:07 each Exp $ */
|
||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
@@ -602,7 +602,8 @@ dstkey_fromconfig(const cfg_obj_t *vconfig, const cfg_obj_t *key,
|
|||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
load_view_keys(const cfg_obj_t *keys, const cfg_obj_t *vconfig,
|
load_view_keys(const cfg_obj_t *keys, const cfg_obj_t *vconfig,
|
||||||
dns_view_t *view, isc_boolean_t managed, isc_mem_t *mctx)
|
dns_view_t *view, isc_boolean_t managed,
|
||||||
|
dns_name_t *keyname, isc_mem_t *mctx)
|
||||||
{
|
{
|
||||||
const cfg_listelt_t *elt, *elt2;
|
const cfg_listelt_t *elt, *elt2;
|
||||||
const cfg_obj_t *key, *keylist;
|
const cfg_obj_t *key, *keylist;
|
||||||
@@ -630,6 +631,16 @@ load_view_keys(const cfg_obj_t *keys, const cfg_obj_t *vconfig,
|
|||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If keyname was specified, we only add that key.
|
||||||
|
*/
|
||||||
|
if (keyname != NULL &&
|
||||||
|
!dns_name_equal(keyname, dst_key_name(dstkey)))
|
||||||
|
{
|
||||||
|
dst_key_free(&dstkey);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
CHECK(dns_keytable_add(secroots, managed, &dstkey));
|
CHECK(dns_keytable_add(secroots, managed, &dstkey));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -653,15 +664,14 @@ load_view_keys(const cfg_obj_t *keys, const cfg_obj_t *vconfig,
|
|||||||
static isc_result_t
|
static isc_result_t
|
||||||
configure_view_dnsseckeys(dns_view_t *view, const cfg_obj_t *vconfig,
|
configure_view_dnsseckeys(dns_view_t *view, const cfg_obj_t *vconfig,
|
||||||
const cfg_obj_t *config, const cfg_obj_t *bindkeys,
|
const cfg_obj_t *config, const cfg_obj_t *bindkeys,
|
||||||
isc_boolean_t auto_dlv, isc_mem_t *mctx)
|
isc_boolean_t auto_dlv, isc_boolean_t auto_root,
|
||||||
|
isc_mem_t *mctx)
|
||||||
{
|
{
|
||||||
isc_result_t result = ISC_R_SUCCESS;
|
isc_result_t result = ISC_R_SUCCESS;
|
||||||
const cfg_obj_t *view_keys = NULL;
|
const cfg_obj_t *view_keys = NULL;
|
||||||
const cfg_obj_t *global_keys = NULL;
|
const cfg_obj_t *global_keys = NULL;
|
||||||
const cfg_obj_t *view_managed_keys = NULL;
|
const cfg_obj_t *view_managed_keys = NULL;
|
||||||
const cfg_obj_t *global_managed_keys = NULL;
|
const cfg_obj_t *global_managed_keys = NULL;
|
||||||
const cfg_obj_t *builtin_keys = NULL;
|
|
||||||
const cfg_obj_t *builtin_managed_keys = NULL;
|
|
||||||
const cfg_obj_t *maps[4];
|
const cfg_obj_t *maps[4];
|
||||||
const cfg_obj_t *voptions = NULL;
|
const cfg_obj_t *voptions = NULL;
|
||||||
const cfg_obj_t *options = NULL;
|
const cfg_obj_t *options = NULL;
|
||||||
@@ -707,9 +717,12 @@ configure_view_dnsseckeys(dns_view_t *view, const cfg_obj_t *vconfig,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (auto_dlv && view->rdclass == dns_rdataclass_in) {
|
if (auto_dlv && view->rdclass == dns_rdataclass_in) {
|
||||||
|
const cfg_obj_t *builtin_keys = NULL;
|
||||||
|
const cfg_obj_t *builtin_managed_keys = NULL;
|
||||||
|
|
||||||
isc_log_write(ns_g_lctx, DNS_LOGCATEGORY_SECURITY,
|
isc_log_write(ns_g_lctx, DNS_LOGCATEGORY_SECURITY,
|
||||||
NS_LOGMODULE_SERVER, ISC_LOG_WARNING,
|
NS_LOGMODULE_SERVER, ISC_LOG_WARNING,
|
||||||
"using built-in trusted-keys for view %s",
|
"using built-in DLV key for view %s",
|
||||||
view->name);
|
view->name);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -730,19 +743,56 @@ configure_view_dnsseckeys(dns_view_t *view, const cfg_obj_t *vconfig,
|
|||||||
|
|
||||||
if (builtin_keys != NULL)
|
if (builtin_keys != NULL)
|
||||||
CHECK(load_view_keys(builtin_keys, vconfig, view,
|
CHECK(load_view_keys(builtin_keys, vconfig, view,
|
||||||
ISC_FALSE, mctx));
|
ISC_FALSE, view->dlv, mctx));
|
||||||
if (builtin_managed_keys != NULL)
|
if (builtin_managed_keys != NULL)
|
||||||
CHECK(load_view_keys(builtin_managed_keys, vconfig,
|
CHECK(load_view_keys(builtin_managed_keys, vconfig,
|
||||||
view, ISC_TRUE, mctx));
|
view, ISC_TRUE, view->dlv, mctx));
|
||||||
}
|
}
|
||||||
|
|
||||||
CHECK(load_view_keys(view_keys, vconfig, view, ISC_FALSE, mctx));
|
if (auto_root && view->rdclass == dns_rdataclass_in) {
|
||||||
CHECK(load_view_keys(view_managed_keys, vconfig, view, ISC_TRUE, mctx));
|
const cfg_obj_t *builtin_keys = NULL;
|
||||||
|
const cfg_obj_t *builtin_managed_keys = NULL;
|
||||||
|
|
||||||
|
isc_log_write(ns_g_lctx, DNS_LOGCATEGORY_SECURITY,
|
||||||
|
NS_LOGMODULE_SERVER, ISC_LOG_WARNING,
|
||||||
|
"using built-in root key for view %s",
|
||||||
|
view->name);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If bind.keys exists, it overrides the managed-keys
|
||||||
|
* clause hard-coded in ns_g_config.
|
||||||
|
*/
|
||||||
|
if (bindkeys != NULL) {
|
||||||
|
(void)cfg_map_get(bindkeys, "trusted-keys",
|
||||||
|
&builtin_keys);
|
||||||
|
(void)cfg_map_get(bindkeys, "managed-keys",
|
||||||
|
&builtin_managed_keys);
|
||||||
|
} else {
|
||||||
|
(void)cfg_map_get(ns_g_config, "trusted-keys",
|
||||||
|
&builtin_keys);
|
||||||
|
(void)cfg_map_get(ns_g_config, "managed-keys",
|
||||||
|
&builtin_managed_keys);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (builtin_keys != NULL)
|
||||||
|
CHECK(load_view_keys(builtin_keys, vconfig, view,
|
||||||
|
ISC_FALSE, dns_rootname, mctx));
|
||||||
|
if (builtin_managed_keys != NULL)
|
||||||
|
CHECK(load_view_keys(builtin_managed_keys, vconfig,
|
||||||
|
view, ISC_TRUE, dns_rootname,
|
||||||
|
mctx));
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECK(load_view_keys(view_keys, vconfig, view, ISC_FALSE,
|
||||||
|
NULL, mctx));
|
||||||
|
CHECK(load_view_keys(view_managed_keys, vconfig, view, ISC_TRUE,
|
||||||
|
NULL, mctx));
|
||||||
|
|
||||||
if (view->rdclass == dns_rdataclass_in) {
|
if (view->rdclass == dns_rdataclass_in) {
|
||||||
CHECK(load_view_keys(global_keys, vconfig, view, ISC_FALSE,
|
CHECK(load_view_keys(global_keys, vconfig, view, ISC_FALSE,
|
||||||
mctx));
|
NULL, mctx));
|
||||||
CHECK(load_view_keys(global_managed_keys, vconfig, view,
|
CHECK(load_view_keys(global_managed_keys, vconfig, view,
|
||||||
ISC_TRUE, mctx));
|
ISC_TRUE, NULL, mctx));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1374,6 +1424,7 @@ configure_view(dns_view_t *view, cfg_parser_t* parser,
|
|||||||
isc_stats_t *resstats = NULL;
|
isc_stats_t *resstats = NULL;
|
||||||
dns_stats_t *resquerystats = NULL;
|
dns_stats_t *resquerystats = NULL;
|
||||||
isc_boolean_t auto_dlv = ISC_FALSE;
|
isc_boolean_t auto_dlv = ISC_FALSE;
|
||||||
|
isc_boolean_t auto_root = ISC_FALSE;
|
||||||
ns_cache_t *nsc;
|
ns_cache_t *nsc;
|
||||||
isc_boolean_t zero_no_soattl;
|
isc_boolean_t zero_no_soattl;
|
||||||
cfg_parser_t *newzones_parser = NULL;
|
cfg_parser_t *newzones_parser = NULL;
|
||||||
@@ -1740,7 +1791,13 @@ configure_view(dns_view_t *view, cfg_parser_t* parser,
|
|||||||
obj = NULL;
|
obj = NULL;
|
||||||
result = ns_config_get(maps, "dnssec-validation", &obj);
|
result = ns_config_get(maps, "dnssec-validation", &obj);
|
||||||
INSIST(result == ISC_R_SUCCESS);
|
INSIST(result == ISC_R_SUCCESS);
|
||||||
view->enablevalidation = cfg_obj_asboolean(obj);
|
if (cfg_obj_isboolean(obj)) {
|
||||||
|
view->enablevalidation = cfg_obj_asboolean(obj);
|
||||||
|
} else {
|
||||||
|
/* If dnssec-validation is not boolean, it must be "auto" */
|
||||||
|
view->enablevalidation = ISC_TRUE;
|
||||||
|
auto_root = ISC_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
obj = NULL;
|
obj = NULL;
|
||||||
result = ns_config_get(maps, "max-cache-ttl", &obj);
|
result = ns_config_get(maps, "max-cache-ttl", &obj);
|
||||||
@@ -2362,24 +2419,6 @@ configure_view(dns_view_t *view, cfg_parser_t* parser,
|
|||||||
dns_name_t *dlv;
|
dns_name_t *dlv;
|
||||||
|
|
||||||
obj = cfg_listelt_value(element);
|
obj = cfg_listelt_value(element);
|
||||||
#if 0
|
|
||||||
dns_fixedname_t fixed;
|
|
||||||
dns_name_t *name;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* When we support multiple dnssec-lookaside
|
|
||||||
* entries this is how to find the domain to be
|
|
||||||
* checked. XXXMPA
|
|
||||||
*/
|
|
||||||
dns_fixedname_init(&fixed);
|
|
||||||
name = dns_fixedname_name(&fixed);
|
|
||||||
str = cfg_obj_asstring(cfg_tuple_get(obj,
|
|
||||||
"domain"));
|
|
||||||
isc_buffer_init(&b, str, strlen(str));
|
|
||||||
isc_buffer_add(&b, strlen(str));
|
|
||||||
CHECK(dns_name_fromtext(name, &b, dns_rootname,
|
|
||||||
0, NULL));
|
|
||||||
#endif
|
|
||||||
str = cfg_obj_asstring(cfg_tuple_get(obj,
|
str = cfg_obj_asstring(cfg_tuple_get(obj,
|
||||||
"trust-anchor"));
|
"trust-anchor"));
|
||||||
isc_buffer_init(&b, str, strlen(str));
|
isc_buffer_init(&b, str, strlen(str));
|
||||||
@@ -2397,7 +2436,7 @@ configure_view(dns_view_t *view, cfg_parser_t* parser,
|
|||||||
* "security roots".
|
* "security roots".
|
||||||
*/
|
*/
|
||||||
CHECK(configure_view_dnsseckeys(view, vconfig, config, bindkeys,
|
CHECK(configure_view_dnsseckeys(view, vconfig, config, bindkeys,
|
||||||
auto_dlv, mctx));
|
auto_dlv, auto_root, mctx));
|
||||||
dns_resolver_resetmustbesecure(view->resolver);
|
dns_resolver_resetmustbesecure(view->resolver);
|
||||||
obj = NULL;
|
obj = NULL;
|
||||||
result = ns_config_get(maps, "dnssec-must-be-secure", &obj);
|
result = ns_config_get(maps, "dnssec-must-be-secure", &obj);
|
||||||
|
@@ -2,7 +2,7 @@ Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
|
|||||||
Copyright (C) 2000-2002 Internet Software Consortium.
|
Copyright (C) 2000-2002 Internet Software Consortium.
|
||||||
See COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
|
See COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
|
||||||
|
|
||||||
$Id: README,v 1.8 2004/03/05 05:00:08 marka Exp $
|
$Id: README,v 1.9 2011/01/03 23:45:07 each Exp $
|
||||||
|
|
||||||
The test setup for the DNSSEC tests has a secure root.
|
The test setup for the DNSSEC tests has a secure root.
|
||||||
|
|
||||||
@@ -15,3 +15,7 @@ for the root.
|
|||||||
|
|
||||||
ns5 is a caching-only server, configured with the an incorrect trusted
|
ns5 is a caching-only server, configured with the an incorrect trusted
|
||||||
key for the root. It is used for testing failure cases.
|
key for the root. It is used for testing failure cases.
|
||||||
|
|
||||||
|
ns6 is a caching-only server configured to use DLV.
|
||||||
|
|
||||||
|
ns7 is used for checking non-cacheable answers.
|
||||||
|
@@ -15,9 +15,10 @@
|
|||||||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
# PERFORMANCE OF THIS SOFTWARE.
|
# PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
# $Id: clean.sh,v 1.31 2010/12/18 02:12:44 each Exp $
|
# $Id: clean.sh,v 1.32 2011/01/03 23:45:07 each Exp $
|
||||||
|
|
||||||
rm -f */K* */keyset-* */dsset-* */dlvset-* */signedkey-* */*.signed */trusted.conf */tmp* */*.jnl */*.bk
|
rm -f */K* */keyset-* */dsset-* */dlvset-* */signedkey-* */*.signed
|
||||||
|
rm -f */trusted.conf */managed.conf */tmp* */*.jnl */*.bk
|
||||||
rm -f ns1/root.db ns2/example.db ns3/secure.example.db
|
rm -f ns1/root.db ns2/example.db ns3/secure.example.db
|
||||||
rm -f ns3/unsecure.example.db ns3/bogus.example.db ns3/keyless.example.db
|
rm -f ns3/unsecure.example.db ns3/bogus.example.db ns3/keyless.example.db
|
||||||
rm -f ns3/dynamic.example.db ns3/dynamic.example.db.signed.jnl
|
rm -f ns3/dynamic.example.db ns3/dynamic.example.db.signed.jnl
|
||||||
@@ -44,4 +45,4 @@ rm -f ns1/managed.key.id
|
|||||||
rm -f signer/example.db
|
rm -f signer/example.db
|
||||||
rm -f ns2/algroll.db
|
rm -f ns2/algroll.db
|
||||||
rm -f ns3/kskonly.example.db
|
rm -f ns3/kskonly.example.db
|
||||||
|
rm -f ns4/named.conf
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
# PERFORMANCE OF THIS SOFTWARE.
|
# PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
# $Id: sign.sh,v 1.34 2010/11/16 01:14:51 marka Exp $
|
# $Id: sign.sh,v 1.35 2011/01/03 23:45:07 each Exp $
|
||||||
|
|
||||||
SYSTEMTESTTOP=../..
|
SYSTEMTESTTOP=../..
|
||||||
. $SYSTEMTESTTOP/conf.sh
|
. $SYSTEMTESTTOP/conf.sh
|
||||||
@@ -39,7 +39,6 @@ cat $infile $keyname.key > $zonefile
|
|||||||
$SIGNER -P -g -r $RANDFILE -o $zone $zonefile > /dev/null
|
$SIGNER -P -g -r $RANDFILE -o $zone $zonefile > /dev/null
|
||||||
|
|
||||||
# Configure the resolving server with a trusted key.
|
# Configure the resolving server with a trusted key.
|
||||||
|
|
||||||
cat $keyname.key | grep -v '^; ' | $PERL -n -e '
|
cat $keyname.key | grep -v '^; ' | $PERL -n -e '
|
||||||
local ($dn, $class, $type, $flags, $proto, $alg, @rest) = split;
|
local ($dn, $class, $type, $flags, $proto, $alg, @rest) = split;
|
||||||
local $key = join("", @rest);
|
local $key = join("", @rest);
|
||||||
@@ -49,11 +48,23 @@ trusted-keys {
|
|||||||
};
|
};
|
||||||
EOF
|
EOF
|
||||||
' > trusted.conf
|
' > trusted.conf
|
||||||
|
|
||||||
|
# ...or with a managed key.
|
||||||
|
cat $keyname.key | grep -v '^; ' | $PERL -n -e '
|
||||||
|
local ($dn, $class, $type, $flags, $proto, $alg, @rest) = split;
|
||||||
|
local $key = join("", @rest);
|
||||||
|
print <<EOF
|
||||||
|
managed-keys {
|
||||||
|
"$dn" initial-key $flags $proto $alg "$key";
|
||||||
|
};
|
||||||
|
EOF
|
||||||
|
' > managed.conf
|
||||||
cp trusted.conf ../ns2/trusted.conf
|
cp trusted.conf ../ns2/trusted.conf
|
||||||
cp trusted.conf ../ns3/trusted.conf
|
cp trusted.conf ../ns3/trusted.conf
|
||||||
cp trusted.conf ../ns4/trusted.conf
|
cp trusted.conf ../ns4/trusted.conf
|
||||||
cp trusted.conf ../ns6/trusted.conf
|
cp trusted.conf ../ns6/trusted.conf
|
||||||
cp trusted.conf ../ns7/trusted.conf
|
cp trusted.conf ../ns7/trusted.conf
|
||||||
|
cp managed.conf ../ns4/managed.conf
|
||||||
#
|
#
|
||||||
# Save keyid for managed key id test.
|
# Save keyid for managed key id test.
|
||||||
#
|
#
|
||||||
|
60
bin/tests/system/dnssec/ns4/named1.conf
Normal file
60
bin/tests/system/dnssec/ns4/named1.conf
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2004, 2006, 2007, 2010 Internet Systems Consortium, Inc. ("ISC")
|
||||||
|
* Copyright (C) 2000, 2001 Internet Software Consortium.
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
* AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
||||||
|
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* $Id: named1.conf,v 1.2 2011/01/03 23:45:08 each Exp $ */
|
||||||
|
|
||||||
|
// NS4
|
||||||
|
|
||||||
|
controls { /* empty */ };
|
||||||
|
|
||||||
|
options {
|
||||||
|
query-source address 10.53.0.4;
|
||||||
|
notify-source 10.53.0.4;
|
||||||
|
transfer-source 10.53.0.4;
|
||||||
|
port 5300;
|
||||||
|
pid-file "named.pid";
|
||||||
|
listen-on { 10.53.0.4; };
|
||||||
|
listen-on-v6 { none; };
|
||||||
|
recursion yes;
|
||||||
|
acache-enable yes;
|
||||||
|
dnssec-enable yes;
|
||||||
|
dnssec-validation yes;
|
||||||
|
dnssec-must-be-secure mustbesecure.example yes;
|
||||||
|
|
||||||
|
# Note: We only reference the bind.keys file here to confirm that it
|
||||||
|
# is *not* being used. It contains the real root key, and we're
|
||||||
|
# using a local toy root zone for the tests, so it wouldn't work.
|
||||||
|
# But since dnssec-validation is set to "yes" not "auto", that
|
||||||
|
# won't matter.
|
||||||
|
bindkeys-file "../../../../../bind.keys";
|
||||||
|
};
|
||||||
|
|
||||||
|
key rndc_key {
|
||||||
|
secret "1234abcd8765";
|
||||||
|
algorithm hmac-md5;
|
||||||
|
};
|
||||||
|
|
||||||
|
controls {
|
||||||
|
inet 10.53.0.4 port 9953 allow { any; } keys { rndc_key; };
|
||||||
|
};
|
||||||
|
|
||||||
|
zone "." {
|
||||||
|
type hint;
|
||||||
|
file "../../common/root.hint";
|
||||||
|
};
|
||||||
|
|
||||||
|
include "trusted.conf";
|
@@ -15,7 +15,7 @@
|
|||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: named.conf,v 1.30 2010/06/25 23:46:51 tbox Exp $ */
|
/* $Id: named2.conf,v 1.2 2011/01/03 23:45:08 each Exp $ */
|
||||||
|
|
||||||
// NS4
|
// NS4
|
||||||
|
|
||||||
@@ -32,8 +32,8 @@ options {
|
|||||||
recursion yes;
|
recursion yes;
|
||||||
acache-enable yes;
|
acache-enable yes;
|
||||||
dnssec-enable yes;
|
dnssec-enable yes;
|
||||||
dnssec-validation yes;
|
dnssec-validation auto;
|
||||||
dnssec-must-be-secure mustbesecure.example yes;
|
bindkeys-file "managed.conf";
|
||||||
};
|
};
|
||||||
|
|
||||||
key rndc_key {
|
key rndc_key {
|
||||||
@@ -49,5 +49,3 @@ zone "." {
|
|||||||
type hint;
|
type hint;
|
||||||
file "../../common/root.hint";
|
file "../../common/root.hint";
|
||||||
};
|
};
|
||||||
|
|
||||||
include "trusted.conf";
|
|
@@ -15,7 +15,7 @@
|
|||||||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
# PERFORMANCE OF THIS SOFTWARE.
|
# PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
# $Id: setup.sh,v 1.17 2009/10/27 22:25:37 marka Exp $
|
# $Id: setup.sh,v 1.18 2011/01/03 23:45:07 each Exp $
|
||||||
|
|
||||||
../../../tools/genrandom 400 random.data
|
../../../tools/genrandom 400 random.data
|
||||||
|
|
||||||
@@ -23,4 +23,6 @@ cd ns1 && sh sign.sh
|
|||||||
|
|
||||||
echo "a.bogus.example. A 10.0.0.22" >>../ns3/bogus.example.db.signed
|
echo "a.bogus.example. A 10.0.0.22" >>../ns3/bogus.example.db.signed
|
||||||
|
|
||||||
|
cd ../ns4 && cp -f named1.conf named.conf
|
||||||
cd ../ns5 && cp -f trusted.conf.bad trusted.conf
|
cd ../ns5 && cp -f trusted.conf.bad trusted.conf
|
||||||
|
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
# PERFORMANCE OF THIS SOFTWARE.
|
# PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
# $Id: tests.sh,v 1.71 2010/11/16 01:14:51 marka Exp $
|
# $Id: tests.sh,v 1.72 2011/01/03 23:45:07 each Exp $
|
||||||
|
|
||||||
SYSTEMTESTTOP=..
|
SYSTEMTESTTOP=..
|
||||||
. $SYSTEMTESTTOP/conf.sh
|
. $SYSTEMTESTTOP/conf.sh
|
||||||
@@ -1055,5 +1055,57 @@ else
|
|||||||
echo "I:The DNSSEC update test requires the Net::DNS library." >&2
|
echo "I:The DNSSEC update test requires the Net::DNS library." >&2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Reconfigure caching server to use "dnssec-validation auto", and repeat
|
||||||
|
# some of the DNSSEC validation tests to ensure that it works correctly.
|
||||||
|
echo "I:switching to automatic root key configuration"
|
||||||
|
cp ns4/named2.conf ns4/named.conf
|
||||||
|
$RNDC -c ../common/rndc.conf -s 10.53.0.4 -p 9953 reconfig 2>&1 | sed 's/^/I:ns4 /'
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
echo "I:checking positive validation NSEC ($n)"
|
||||||
|
ret=0
|
||||||
|
$DIG $DIGOPTS +noauth a.example. @10.53.0.2 a > dig.out.ns2.test$n || ret=1
|
||||||
|
$DIG $DIGOPTS +noauth a.example. @10.53.0.4 a > dig.out.ns4.test$n || ret=1
|
||||||
|
$PERL ../digcomp.pl dig.out.ns2.test$n dig.out.ns4.test$n || ret=1
|
||||||
|
grep "flags:.*ad.*QUERY" dig.out.ns4.test$n > /dev/null || ret=1
|
||||||
|
n=`expr $n + 1`
|
||||||
|
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||||
|
status=`expr $status + $ret`
|
||||||
|
|
||||||
|
echo "I:checking positive validation NSEC3 ($n)"
|
||||||
|
ret=0
|
||||||
|
$DIG $DIGOPTS +noauth a.nsec3.example. \
|
||||||
|
@10.53.0.3 a > dig.out.ns3.test$n || ret=1
|
||||||
|
$DIG $DIGOPTS +noauth a.nsec3.example. \
|
||||||
|
@10.53.0.4 a > dig.out.ns4.test$n || ret=1
|
||||||
|
$PERL ../digcomp.pl dig.out.ns3.test$n dig.out.ns4.test$n || ret=1
|
||||||
|
grep "flags:.*ad.*QUERY" dig.out.ns4.test$n > /dev/null || ret=1
|
||||||
|
n=`expr $n + 1`
|
||||||
|
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||||
|
status=`expr $status + $ret`
|
||||||
|
|
||||||
|
echo "I:checking positive validation OPTOUT ($n)"
|
||||||
|
ret=0
|
||||||
|
$DIG $DIGOPTS +noauth a.optout.example. \
|
||||||
|
@10.53.0.3 a > dig.out.ns3.test$n || ret=1
|
||||||
|
$DIG $DIGOPTS +noauth a.optout.example. \
|
||||||
|
@10.53.0.4 a > dig.out.ns4.test$n || ret=1
|
||||||
|
$PERL ../digcomp.pl dig.out.ns3.test$n dig.out.ns4.test$n || ret=1
|
||||||
|
grep "flags:.*ad.*QUERY" dig.out.ns4.test$n > /dev/null || ret=1
|
||||||
|
n=`expr $n + 1`
|
||||||
|
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||||
|
status=`expr $status + $ret`
|
||||||
|
|
||||||
|
echo "I:checking negative validation ($n)"
|
||||||
|
ret=0
|
||||||
|
$DIG $DIGOPTS +noauth q.example. @10.53.0.2 a > dig.out.ns2.test$n || ret=1
|
||||||
|
$DIG $DIGOPTS +noauth q.example. @10.53.0.4 a > dig.out.ns4.test$n || ret=1
|
||||||
|
$PERL ../digcomp.pl dig.out.ns2.test$n dig.out.ns4.test$n || ret=1
|
||||||
|
grep "flags:.*ad.*QUERY" dig.out.ns4.test$n > /dev/null || ret=1
|
||||||
|
grep "status: NXDOMAIN" dig.out.ns4.test$n > /dev/null || ret=1
|
||||||
|
n=`expr $n + 1`
|
||||||
|
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||||
|
status=`expr $status + $ret`
|
||||||
|
|
||||||
echo "I:exit status: $status"
|
echo "I:exit status: $status"
|
||||||
exit $status
|
exit $status
|
||||||
|
49
bind.keys
49
bind.keys
@@ -1,7 +1,46 @@
|
|||||||
/* $Id: bind.keys,v 1.6 2010/06/20 07:15:28 marka Exp $ */
|
/* $Id: bind.keys,v 1.7 2011/01/03 23:45:07 each Exp $ */
|
||||||
|
# The bind.keys file is used to override the built-in DNSSEC trust anchors
|
||||||
|
# which are included as part of BIND 9. As of the current release, the only
|
||||||
|
# trust anchors it contains are those for the DNS root zone ("."), and for
|
||||||
|
# the ISC DNSSEC Lookaside Validation zone ("dlv.isc.org"). Trust anchors
|
||||||
|
# for any other zones MUST be configured elsewhere; if they are configured
|
||||||
|
# here, they will not be recognized or used by named.
|
||||||
|
#
|
||||||
|
# The built-in trust anchors are provided for convenience of configuration.
|
||||||
|
# They are not activated within named.conf unless specifically switched on.
|
||||||
|
# To use the built-in root key, set "dnssec-validation auto;" in
|
||||||
|
# named.conf options. To use the built-in DLV key, set
|
||||||
|
# "dnssec-lookaside auto;". Without these options being set,
|
||||||
|
# the keys in this file are ignored.
|
||||||
|
#
|
||||||
|
# This file is NOT expected to be user-configured.
|
||||||
|
#
|
||||||
|
# These keys are current as of January 2011. If any key fails to
|
||||||
|
# initialize correctly, it may have expired. In that event you should
|
||||||
|
# replace this file with a current version. The latest version of
|
||||||
|
# bind.keys can always be obtained from ISC at https://www.isc.org/bind-keys.
|
||||||
|
|
||||||
managed-keys {
|
managed-keys {
|
||||||
# NOTE: This key is current as of October 2009.
|
# ISC DLV: See https://www.isc.org/solutions/dlv for details.
|
||||||
# If it fails to initialize correctly, it may have expired;
|
# NOTE: This key is activated by setting "dnssec-lookaside auto;"
|
||||||
# see https://www.isc.org/solutions/dlv for a replacement.
|
# in named.conf.
|
||||||
dlv.isc.org. initial-key 257 3 5 "BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2 brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+ 1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5 ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt TDN0YUuWrBNh";
|
dlv.isc.org. initial-key 257 3 5 "BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2
|
||||||
|
brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+
|
||||||
|
1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5
|
||||||
|
ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk
|
||||||
|
Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM
|
||||||
|
QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt
|
||||||
|
TDN0YUuWrBNh";
|
||||||
|
|
||||||
|
# ROOT KEY: See https://data.iana.org/root-anchors/root-anchors.xml
|
||||||
|
# for current trust anchor information.
|
||||||
|
# NOTE: This key is activated by setting "dnssec-validation auto;"
|
||||||
|
# in named.conf.
|
||||||
|
. initial-key 257 3 8 "AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF
|
||||||
|
FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX
|
||||||
|
bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD
|
||||||
|
X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz
|
||||||
|
W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS
|
||||||
|
Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq
|
||||||
|
QxA+Uk1ihz0=";
|
||||||
};
|
};
|
||||||
|
@@ -18,7 +18,7 @@
|
|||||||
- PERFORMANCE OF THIS SOFTWARE.
|
- PERFORMANCE OF THIS SOFTWARE.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- File: $Id: Bv9ARM-book.xml,v 1.471 2010/12/25 22:01:35 marka Exp $ -->
|
<!-- File: $Id: Bv9ARM-book.xml,v 1.472 2011/01/03 23:45:08 each Exp $ -->
|
||||||
<book xmlns:xi="http://www.w3.org/2001/XInclude">
|
<book xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||||
<title>BIND 9 Administrator Reference Manual</title>
|
<title>BIND 9 Administrator Reference Manual</title>
|
||||||
|
|
||||||
@@ -2614,13 +2614,23 @@ allow-update { key host1-host2. ;};
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
To enable <command>named</command> to validate answers from
|
To enable <command>named</command> to validate answers from
|
||||||
other servers, the <command>dnssec-enable</command> and
|
other servers, the <command>dnssec-enable</command> option
|
||||||
<command>dnssec-validation</command> options must both be
|
must be set to <userinput>yes</userinput>, and the
|
||||||
set to yes (the default setting in <acronym>BIND</acronym> 9.5
|
<command>dnssec-validation</command> options must be set to
|
||||||
and later), and at least one trust anchor must be configured
|
<userinput>yes</userinput> or <userinput>auto</userinput>.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
If <command>dnssec-validation</command> is set to
|
||||||
|
<userinput>auto</userinput>, then a default
|
||||||
|
trust anchor for the DNS root zone will be used.
|
||||||
|
If it is set to <userinput>yes</userinput>, however,
|
||||||
|
then at least one trust anchor must be configured
|
||||||
with a <command>trusted-keys</command> or
|
with a <command>trusted-keys</command> or
|
||||||
<command>managed-keys</command> statement in
|
<command>managed-keys</command> statement in
|
||||||
<filename>named.conf</filename>.
|
<filename>named.conf</filename>, or DNSSEC validation
|
||||||
|
will not occur. The default setting is
|
||||||
|
<userinput>yes</userinput>.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
@@ -5006,7 +5016,7 @@ badresp:1,adberr:0,findfail:0,valfail:0]
|
|||||||
<optional> maintain-ixfr-base <replaceable>yes_or_no</replaceable>; </optional>
|
<optional> maintain-ixfr-base <replaceable>yes_or_no</replaceable>; </optional>
|
||||||
<optional> ixfr-from-differences (<replaceable>yes_or_no</replaceable> | <constant>master</constant> | <constant>slave</constant>); </optional>
|
<optional> ixfr-from-differences (<replaceable>yes_or_no</replaceable> | <constant>master</constant> | <constant>slave</constant>); </optional>
|
||||||
<optional> dnssec-enable <replaceable>yes_or_no</replaceable>; </optional>
|
<optional> dnssec-enable <replaceable>yes_or_no</replaceable>; </optional>
|
||||||
<optional> dnssec-validation <replaceable>yes_or_no</replaceable>; </optional>
|
<optional> dnssec-validation (<replaceable>yes_or_no</replaceable> | <constant>auto</constant>); </optional>
|
||||||
<optional> dnssec-lookaside ( <replaceable>auto</replaceable> |
|
<optional> dnssec-lookaside ( <replaceable>auto</replaceable> |
|
||||||
<replaceable>domain</replaceable> trust-anchor <replaceable>domain</replaceable> ); </optional>
|
<replaceable>domain</replaceable> trust-anchor <replaceable>domain</replaceable> ); </optional>
|
||||||
<optional> dnssec-must-be-secure <replaceable>domain yes_or_no</replaceable>; </optional>
|
<optional> dnssec-must-be-secure <replaceable>domain yes_or_no</replaceable>; </optional>
|
||||||
@@ -5487,7 +5497,8 @@ badresp:1,adberr:0,findfail:0,valfail:0]
|
|||||||
The pathname of a file to override the built-in trusted
|
The pathname of a file to override the built-in trusted
|
||||||
keys provided by <command>named</command>.
|
keys provided by <command>named</command>.
|
||||||
See the discussion of <command>dnssec-lookaside</command>
|
See the discussion of <command>dnssec-lookaside</command>
|
||||||
for details. If not specified, the default is
|
and <command>dnssec-validation</command> for details.
|
||||||
|
If not specified, the default is
|
||||||
<filename>/etc/bind.keys</filename>.
|
<filename>/etc/bind.keys</filename>.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@@ -5694,10 +5705,10 @@ options {
|
|||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The default DLV key is stored in the file
|
The default DLV key is stored in the file
|
||||||
<filename>bind.keys</filename>, which
|
<filename>bind.keys</filename>;
|
||||||
<command>named</command> loads at startup if
|
<command>named</command> will load that key at
|
||||||
<command>dnssec-lookaside</command> is set to
|
startup if <command>dnssec-lookaside</command> is set to
|
||||||
<constant>auto</constant>. A copy of that file is
|
<constant>auto</constant>. A copy of the file is
|
||||||
installed along with <acronym>BIND</acronym> 9, and is
|
installed along with <acronym>BIND</acronym> 9, and is
|
||||||
current as of the release date. If the DLV key expires, a
|
current as of the release date. If the DLV key expires, a
|
||||||
new copy of <filename>bind.keys</filename> can be downloaded
|
new copy of <filename>bind.keys</filename> can be downloaded
|
||||||
@@ -5711,10 +5722,10 @@ options {
|
|||||||
to be recompiled with a new key when the DLV key expires.)
|
to be recompiled with a new key when the DLV key expires.)
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
NOTE: Using <filename>bind.keys</filename> to store
|
NOTE: <command>named</command> only loads certain specific
|
||||||
locally-configured keys is possible, but not
|
keys from <filename>bind.keys</filename>: those for the
|
||||||
recommended, as the file will be overwritten whenever
|
DLV zone and for the DNS root zone. The file cannot be
|
||||||
<acronym>BIND</acronym> 9 is re-installed or upgraded.
|
used to store keys for other zones.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -6595,7 +6606,15 @@ options {
|
|||||||
Enable DNSSEC validation in <command>named</command>.
|
Enable DNSSEC validation in <command>named</command>.
|
||||||
Note <command>dnssec-enable</command> also needs to be
|
Note <command>dnssec-enable</command> also needs to be
|
||||||
set to <userinput>yes</userinput> to be effective.
|
set to <userinput>yes</userinput> to be effective.
|
||||||
The default is <userinput>yes</userinput>.
|
If set to <userinput>no</userinput>, DNSSEC validation
|
||||||
|
is disabled. If set to <userinput>auto</userinput>,
|
||||||
|
DNSSEC validation is enabled, and a default
|
||||||
|
trust-anchor for the DNS root zone is used. 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. The default
|
||||||
|
is <userinput>yes</userinput>.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: grammar.h,v 1.22 2010/08/11 18:14:20 each Exp $ */
|
/* $Id: grammar.h,v 1.23 2011/01/03 23:45:08 each Exp $ */
|
||||||
|
|
||||||
#ifndef ISCCFG_GRAMMAR_H
|
#ifndef ISCCFG_GRAMMAR_H
|
||||||
#define ISCCFG_GRAMMAR_H 1
|
#define ISCCFG_GRAMMAR_H 1
|
||||||
@@ -328,9 +328,15 @@ cfg_parse_rawport(cfg_parser_t *pctx, unsigned int flags, in_port_t *port);
|
|||||||
isc_result_t
|
isc_result_t
|
||||||
cfg_parse_sockaddr(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret);
|
cfg_parse_sockaddr(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret);
|
||||||
|
|
||||||
|
isc_result_t
|
||||||
|
cfg_parse_boolean(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret);
|
||||||
|
|
||||||
void
|
void
|
||||||
cfg_print_sockaddr(cfg_printer_t *pctx, const cfg_obj_t *obj);
|
cfg_print_sockaddr(cfg_printer_t *pctx, const cfg_obj_t *obj);
|
||||||
|
|
||||||
|
void
|
||||||
|
cfg_print_boolean(cfg_printer_t *pctx, const cfg_obj_t *obj);
|
||||||
|
|
||||||
void
|
void
|
||||||
cfg_doc_sockaddr(cfg_printer_t *pctx, const cfg_type_t *type);
|
cfg_doc_sockaddr(cfg_printer_t *pctx, const cfg_type_t *type);
|
||||||
|
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: namedconf.c,v 1.126 2010/12/18 01:56:23 each Exp $ */
|
/* $Id: namedconf.c,v 1.127 2011/01/03 23:45:08 each Exp $ */
|
||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
@@ -658,10 +658,60 @@ static cfg_type_t cfg_type_qstringornone = {
|
|||||||
NULL, NULL
|
NULL, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*%
|
||||||
|
* A boolean ("yes" or "no"), or the special keyword "auto".
|
||||||
|
* Used in the dnssec-validation option.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
print_auto(cfg_printer_t *pctx, const cfg_obj_t *obj) {
|
||||||
|
UNUSED(obj);
|
||||||
|
cfg_print_cstr(pctx, "auto");
|
||||||
|
}
|
||||||
|
|
||||||
|
static cfg_type_t cfg_type_auto = {
|
||||||
|
"auto", NULL, print_auto, NULL, &cfg_rep_void, NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static isc_result_t
|
||||||
|
parse_boolorauto(cfg_parser_t *pctx, const cfg_type_t *type,
|
||||||
|
cfg_obj_t **ret)
|
||||||
|
{
|
||||||
|
isc_result_t result;
|
||||||
|
|
||||||
|
CHECK(cfg_gettoken(pctx, CFG_LEXOPT_QSTRING));
|
||||||
|
if (pctx->token.type == isc_tokentype_string &&
|
||||||
|
strcasecmp(TOKEN_STRING(pctx), "auto") == 0)
|
||||||
|
return (cfg_create_obj(pctx, &cfg_type_auto, ret));
|
||||||
|
cfg_ungettoken(pctx);
|
||||||
|
return (cfg_parse_boolean(pctx, type, ret));
|
||||||
|
cleanup:
|
||||||
|
return (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
print_boolorauto(cfg_printer_t *pctx, const cfg_obj_t *obj) {
|
||||||
|
if (obj->type->rep == &cfg_rep_void)
|
||||||
|
cfg_print_chars(pctx, "auto", 4);
|
||||||
|
else if (obj->value.boolean)
|
||||||
|
cfg_print_chars(pctx, "yes", 3);
|
||||||
|
else
|
||||||
|
cfg_print_chars(pctx, "no", 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
doc_boolorauto(cfg_printer_t *pctx, const cfg_type_t *type) {
|
||||||
|
UNUSED(type);
|
||||||
|
cfg_print_cstr(pctx, "( yes | no | auto )");
|
||||||
|
}
|
||||||
|
|
||||||
|
static cfg_type_t cfg_type_boolorauto = {
|
||||||
|
"boolorauto", parse_boolorauto, print_boolorauto,
|
||||||
|
doc_boolorauto, NULL, NULL
|
||||||
|
};
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
* keyword hostname
|
* keyword hostname
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void
|
static void
|
||||||
print_hostname(cfg_printer_t *pctx, const cfg_obj_t *obj) {
|
print_hostname(cfg_printer_t *pctx, const cfg_obj_t *obj) {
|
||||||
UNUSED(obj);
|
UNUSED(obj);
|
||||||
@@ -893,7 +943,6 @@ options_clauses[] = {
|
|||||||
{ NULL, NULL, 0 }
|
{ NULL, NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static cfg_type_t cfg_type_namelist = {
|
static cfg_type_t cfg_type_namelist = {
|
||||||
"namelist", cfg_parse_bracketed_list, cfg_print_bracketed_list,
|
"namelist", cfg_parse_bracketed_list, cfg_print_bracketed_list,
|
||||||
cfg_doc_bracketed_list, &cfg_rep_list, &cfg_type_qstring };
|
cfg_doc_bracketed_list, &cfg_rep_list, &cfg_type_qstring };
|
||||||
@@ -1046,7 +1095,7 @@ view_clauses[] = {
|
|||||||
{ "dnssec-lookaside", &cfg_type_lookaside, CFG_CLAUSEFLAG_MULTI },
|
{ "dnssec-lookaside", &cfg_type_lookaside, CFG_CLAUSEFLAG_MULTI },
|
||||||
{ "dnssec-must-be-secure", &cfg_type_mustbesecure,
|
{ "dnssec-must-be-secure", &cfg_type_mustbesecure,
|
||||||
CFG_CLAUSEFLAG_MULTI },
|
CFG_CLAUSEFLAG_MULTI },
|
||||||
{ "dnssec-validation", &cfg_type_boolean, 0 },
|
{ "dnssec-validation", &cfg_type_boolorauto, 0 },
|
||||||
{ "dual-stack-servers", &cfg_type_nameportiplist, 0 },
|
{ "dual-stack-servers", &cfg_type_nameportiplist, 0 },
|
||||||
{ "edns-udp-size", &cfg_type_uint32, 0 },
|
{ "edns-udp-size", &cfg_type_uint32, 0 },
|
||||||
{ "empty-contact", &cfg_type_astring, 0 },
|
{ "empty-contact", &cfg_type_astring, 0 },
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: parser.c,v 1.137 2010/11/16 05:38:31 marka Exp $ */
|
/* $Id: parser.c,v 1.138 2011/01/03 23:45:08 each Exp $ */
|
||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
@@ -868,8 +868,8 @@ cfg_obj_asboolean(const cfg_obj_t *obj) {
|
|||||||
return (obj->value.boolean);
|
return (obj->value.boolean);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
isc_result_t
|
||||||
parse_boolean(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret)
|
cfg_parse_boolean(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_boolean_t value;
|
isc_boolean_t value;
|
||||||
@@ -908,8 +908,8 @@ parse_boolean(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret)
|
|||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
print_boolean(cfg_printer_t *pctx, const cfg_obj_t *obj) {
|
cfg_print_boolean(cfg_printer_t *pctx, const cfg_obj_t *obj) {
|
||||||
if (obj->value.boolean)
|
if (obj->value.boolean)
|
||||||
cfg_print_chars(pctx, "yes", 3);
|
cfg_print_chars(pctx, "yes", 3);
|
||||||
else
|
else
|
||||||
@@ -917,7 +917,7 @@ print_boolean(cfg_printer_t *pctx, const cfg_obj_t *obj) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cfg_type_t cfg_type_boolean = {
|
cfg_type_t cfg_type_boolean = {
|
||||||
"boolean", parse_boolean, print_boolean, cfg_doc_terminal,
|
"boolean", cfg_parse_boolean, cfg_print_boolean, cfg_doc_terminal,
|
||||||
&cfg_rep_boolean, NULL
|
&cfg_rep_boolean, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user