On Fri, Nov 17, 2017 at 12:49:33PM -0800, Jacob Hoffman-Andrews wrote:

> https://cabforum.org/wp-content/uploads/CA-Browser-Forum-BR-1.5.4.pdf
> 
> > CAs are permitted to treat a record lookup failure as permission to issue
> > if:
> > - the failure is outside the CA's infrastructure;
> > - the lookup has been retried at least once; and
> > - the domain's zone does not have a DNSSEC validation chain to the ICANN 
> > root.

This language really should have been much more clear.  In particular,
the last item warrants clarification.  It is critical that the CA
determine the lack of a validation chain in a robust manner.  The
simplest approach:

    * Request the SOA record of the domain.  If this lookup fails,
      (ServFail, Timeout, ...) stop, the domain's DNSSEC status is
      unknown.

    * If the lookup returns NoError with AD=1 (a validated SOA
      record or a validated NoData), the domain is signed,
      do not tolerate CAA lookup failure.  Ditto for "NXDomain".
      (As I've repeated too many times, NoError, NoData and NXDomain
      are not lookup failures).

    * If the lookup returns NoError with AD=0 (an insecure SOA
      record or an insecure NODATA), the domain is not signed.
      Ditto for NXDomain.  Tolerate persistent CAA lookup
      failure.

> However, if you're using a standard recursive resolver inside your own
> infrastructure, and you get a SERVFAIL, how do you distinguish whether
> that was a DNSSEC validation failure or another type?

See above, the CA should not attempt to distinguish between different
faiure modes.

    * All failures for domains *not known* to be "insecure" should
      be fatal.

    * Persistent CAA lookup failure for *known* "insecure" domains
    (AD=0 with NoError, NoData or NXDomain) can be ultimately
    ignored as a software or configuration issue with the remote
    nameservers.

I include NXDomain, because I think (correct me if I'm  wrong) CAs
may issue certificates for (internal) names that don't appear on
the public internet, when the customer controls a public prefix.
 
> I realize the
> extended-error draft will help enormously with that, but I'm looking for
> a solution that can be deployed before that is done.

It is best to not attempt to read the tea-leaves.  You can reliably
determine which domains are insecure.  Your validating resolver
will include the AD bit with the SOA lookup result.  If even SOA
lookups fail, the domain is busted, and needs to be fixed on the
customer's end.

> One idea: Run two
> recursive resolvers, one validating and one not. If you get an error
> from both, it's a network error; if you get an error from the validating
> one and success from the non-validating one, it's a DNSSEC error and you
> should refuse issuance.

This is complicated.

> A second issue: How does one determine automatically whether a failure
> is "outside a CA's infrastructure?" This was inserted as a bit of a
> handwave to get the ballot passed, but it would be nice if we could
> formalize this concept, or declare that it's unenforceable.

That language looks misguided to me.

-- 
        Viktor.

_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop

Reply via email to