You could drop "Note that". Either way, OK florian

On 23 November 2021 13:39:51 CET, Jeremie Courreges-Anglas <j...@wxcvbn.org> 
wrote:
>On Mon, Nov 22 2021, Florian Obser <flor...@openbsd.org> wrote:
>> On 2021-11-21 22:21 +01, Jeremie Courreges-Anglas <j...@wxcvbn.org> wrote:
>>> On Sun, Nov 21 2021, Jeremie Courreges-Anglas <j...@wxcvbn.org> wrote:
>>>> On Sat, Nov 20 2021, Florian Obser <flor...@openbsd.org> wrote:
>>>
>>> [...]
>>>
>>>>>> Index: lib/libc/asr/res_mkquery.c
>>>>>> ===================================================================
>>>>>> RCS file: /home/cvs/src/lib/libc/asr/res_mkquery.c,v
>>>>>> retrieving revision 1.13
>>>>>> diff -u -p -r1.13 res_mkquery.c
>>>>>> --- lib/libc/asr/res_mkquery.c   14 Jan 2019 06:49:42 -0000      1.13
>>>>>> +++ lib/libc/asr/res_mkquery.c   20 Nov 2021 14:24:08 -0000
>>>>>> @@ -62,6 +62,9 @@ res_mkquery(int op, const char *dname, i
>>>>>>                  h.flags |= RD_MASK;
>>>>>>          if (ac->ac_options & RES_USE_CD)
>>>>>>                  h.flags |= CD_MASK;
>>>>>> +        if ((ac->ac_options & RES_TRUSTAD) &&
>>>>>> +            !(ac->ac_options & RES_USE_DNSSEC))
>>>>>> +                h.flags |= AD_MASK;
>>>>>
>>>>> do you remember why you check for !RES_USE_DNSSEC?
>>>>> I'd like to leave it out.
>>>>
>>>> First, here's my understanding of RES_USE_DNSSEC: it's supposed to
>>>> activate EDNS and set the DO bit.  The server is then supposed to reply
>>>> with AD set only if the data has been validated (with or without
>>>> DNSSEC), and possibly append add DNSSEC data if available.
>>>>
>>>> Since I didn't know the semantics of both setting AD and DO in a query
>>>> (I would expect such semantics to be sane) I wrote those more
>>>> conservative checks instead.  Does this make sense?  If so, maybe
>>>> a comment would help?
>>>>
>>>>    /* Set the AD flag unless we already plan to set the DNSSEC DO bit. */
>>>>    if ((ac->ac_options & RES_TRUSTAD) &&
>>>>        !(ac->ac_options & RES_USE_DNSSEC))
>>>>
>>>>> In fact I don't think RES_USE_DNSSEC is useful
>>>>> at all.
>>>>> If you want to set the DO flag and start DNSSEC from first principles
>>>>> you are better of talking to the network directly, i.e. rewrite unwind.
>>>>
>>>> RES_USE_DNSSEC has been there since some time already and it's used by
>>>> software in the ports tree, precisely to detect AD=1 - and not so much
>>>> for the key records I think.
>>>
>>> BTW clearing AD might break software that depends on it for stuff like
>>> DANE.  postfix uses RES_USE_DNSSEC for this, but also force-enables
>>> RES_TRUSTAD if available so it shouldn't be affected (upstream's stance
>>> is that you should only use a trusted resolver when running postfix).
>>
>> Ambitious...
>>
>> I actually had considerd to only do automatic trust-ad without any way
>> for users and programs to change it / expand it to non-localhost.
>
>> But then I thought it might be nice in a datacenter setting where you
>> might trust the path to the resolver.
>
>I also think that'trust-ad" is good thing to support.
>
>> And then postfix comes along :(
>
>If we don't want uptreams to use RES_TRUSTAD and thus force the admin to
>do a conscious choice, we could hide it as an implementation detail in
>asr/ or make it a noop (decoupling it from "options trust-ad" and your
>automatic detection).  It would require careful thinking about how
>people use the API.  Personnally I don't feel too strongly about giving
>people rope...
>
>>> On the other hand mail/exim knowlingly doesn't force RES_TRUSTAD.
>>
>> I don't think we'll brake anything, at leat it should not stop
>> progress. DANE verification has to be oportunistic, no? Good luck
>> sending/receiving mail while requiring that certificates are either
>> signed by a known CA or TLSA records are published. That will probably
>> lose you a whole lot of the internet...
>
>Some people in the corporate world actually start to require the use of
>certificates signed by a known CA.  I only spotted this twice so far.
>Regarding DANE and TLSA, one of the goals is to be able to use strong
>authentication without deferring to commercial CAs. So I'm pretty sure
>some nerdy admins have started enforcing it where they can, just because
>they can.
>
>>> I don't know of other ports using RES_USE_DNSSEC and caring about the AD
>>> flag.
>>>
>>> The effect of RES_TRUSTAD/trust-ad on RES_USE_DNSSEC ought to be
>>> documented, but let's do that in another diff: the documentation of the
>>> latter option is already lacking.
>
>Proposal below.  Feedback / oks?
>
>
>Index: res_init.3
>===================================================================
>RCS file: /home/cvs/src/lib/libc/net/res_init.3,v
>retrieving revision 1.5
>diff -u -p -p -u -r1.5 res_init.3
>--- res_init.3 22 Nov 2021 20:18:27 -0000      1.5
>+++ res_init.3 23 Nov 2021 12:25:01 -0000
>@@ -218,6 +218,19 @@ uses 4096 bytes as input buffer size.
> Request that the resolver uses
> Domain Name System Security Extensions (DNSSEC),
> as defined in RFCs 4033, 4034, and 4035.
>+The resolver routines will use the EDNS0 extension and set the DNSSEC DO
>+flag in queries, asking the name server to signal validated records by
>+setting the AD flag in the reply and to attach additional DNSSEC
>+records.
>+Note that the resolver routines will clear the AD flag in replies unless
>+the name servers are considered trusted.
>+Also, client applications are often only interested in the value of the
>+AD flag, making the additional DNSSEC records a waste of network
>+bandwidth.
>+See the description for
>+.Dq options trust-ad
>+in
>+.Xr resolv.conf 5 .
> .It Dv RES_USE_CD
> Set the Checking Disabled flag on queries.
> .El
>

-- 
Sent from a mobile device. Please excuse poor formatting.

Reply via email to