<div dir="ltr">Dear list members,<div><br></div><div>I have a case where two signing tools (BIND/dnssec-signzone and OpenDNSSEC) disagree on the way a zonefile should be signed and I'm looking for your opinion on which behavior you consider correct (or "more correct").</div><div><br></div><div>Signing a zonefile with insecure delegations containing empty non-terminals using NSEC3 and OPTOUT:</div><div>Using OpenDNSSEC, NSEC3 records are created for the empty non-terminals from the insecure delegations.</div><div>BIND/dnssec-signzone does not create NSEC3 records in this case.</div><div><br></div><div>Related information I found:</div><div>RFC 5155, 7.1:</div><div><div>      Each empty non-terminal MUST have a corresponding NSEC3 RR, unless</div><div>      the empty non-terminal is only derived from an insecure delegation</div><div>      covered by an Opt-Out NSEC3 RR.</div></div><div><br></div><div>RFC 7129, 5.1:</div><div><div>   When using Opt-Out, names that are an insecure</div><div>   delegation (and empty non-terminals that are only derived from</div><div>   insecure delegations) don't require an NSEC3 record.</div></div><div><br></div><div>and also:</div><div><div>   If the insecure</div><div>   delegation would introduce empty non-terminals, even more records can</div><div>   be omitted from the zone.</div></div><div><br></div><div>but at the end of that section:</div><div><div>   A recently discovered corner case (see RFC Errata ID 3441 [Err3441])</div><div>   shows that not only those delegations remain insecure but also the</div><div>   empty non-terminal space that is derived from those delegations.</div><div><br></div><div>   Because the names in this empty non-terminal space do exist according</div><div>   to the definition in [RFC4592], the server should respond to queries</div><div>   for these names with a NODATA response.  However, the validator</div><div>   requires an NSEC3 record proving the NODATA response ([RFC5155],</div><div>   Section 8.5):</div><div><br></div><div>      The validator MUST verify that an NSEC3 RR that matches QNAME is</div><div>      present and that both the QTYPE and the CNAME type are not set in</div><div>      its Type Bit Maps field.</div><div><br></div><div>   A way to resolve this contradiction in the specification is to always</div><div>   provide empty non-terminals with an NSEC3 record, even if it is only</div><div>   derived from an insecure delegation.</div></div><div><br></div><div>So based on the very last paragraph it seems to me that OpenDNSSEC does the better of the two. The case is even more frustrating as there are zone validation tools (validns) which consider the ODS behavior an error (NSEC3 without a corresponding record (or empty non-terminal)).</div><div><br></div><div>Emil</div><div><br></div><div><br></div></div>