> I think it doesn't specify how the scope for a given challenge is decided
and communicated.

Great point. My intention that I should probably clarify in the draft is
that the server picks based on the Authorization object:

   - If wildcard: true on the authorization object associated with the
   challenge, then the wildcard scope is used. (
   https://www.rfc-editor.org/rfc/rfc8555#section-7.1.4)
   - If subdomainAuthAllowed: true on the authorization object associated
   with the challenge, then the domain scope is used. (
   https://www.rfc-editor.org/rfc/rfc9444#section-4.1)
   - If none of these are present, then the host scope is used.


I guess there's an issue here where both wildcard and subdomainAuthAllowed
may be present?

Out of the options presented, I like the first and the third options here.
I also see what you mean by dropping dns-02, and just specifying three
dns-account-01 challenges.



On Mon, Mar 18, 2024 at 7:22 PM Seo Suchan <tjtn...@gmail.com> wrote:

> Would it be illegal to server probe both scope and pass if there is
> intended token?
>
>
> On 2024년 3월 19일 오전 8시 3분 7초 GMT+09:00, Jacob Hoffman-Andrews <jsha=
> 40letsencrypt....@dmarc.ietf.org> wrote:
>
>> Thanks, authors, for the updates in
>> https://datatracker.ietf.org/doc/html/draft-ietf-acme-scoped-dns-challenges-00
>> .
>>
>> Adding a "scope" (host, wildcard, or subdomain) to the DNS record name is
>> great. Reading the draft, I think it doesn't specify how the scope for a
>> given challenge is decided and communicated. Three ideas:
>>
>> 1. Server picks, and tells the client.
>>
>> The challenge object contains a "scope" field. The client verifies that
>> the indicated scope is one of "host", "wildcard", or "subdomain", and is
>> less than the maximal scope the client is willing to validate for. For
>> instance, a client might be configured to only accept "host" scope.
>>
>> 2. Client picks.
>>
>> When the client POSTs to the challenge URL, instead of sending the empty
>> object {}, it sends {"scope": "host"}, {"scope": "wildcard"}, or {"scope":
>> "domain"}. The server verifies that the request scope is sufficient for the
>> authorization object (i.e. "wildcard" or above for an authorization object
>> that can be used to issue for a wildcard name), then performs the
>> validation.
>>
>> 3. Server offers options via challenge types
>>
>> We explode out the challenge types from two to six:
>>
>> dns-host-02
>> dns-wildcard-02
>> dns-domain-02
>> dns-account-host-01
>> dns-account-wildcard-01
>> dns-account-domain-01
>>
>> The server populates the authorization object with only those challenge
>> types that are acceptable. For instance, if the authorization object can be
>> used to issue for a wildcard name, the server would not offer dns-host-02
>> or dns-account-host-01.
>>
>> I like this option the best because it provides cleaner separation, and
>> uses the design of ACME nicely: servers offer appropriate challenges, and
>> clients pick the challenge that works best for them. Also it allows for
>> clean implementation in the BRs: they could specify by name which challenge
>> types are allowed to issue for wildcards.
>>
>> Of course, it feels messy to define so many challenge types. Perhaps we
>> could eliminate the dns-02 family? The idea being that clients and servers
>> that wish to adopt the modern best practices from
>> https://datatracker.ietf.org/doc/draft-ietf-dnsop-domain-verification-techniques/,
>> they can also adopt the account-scoping features of the dns-account-01
>> family, which are not burdensome.
>>
> _______________________________________________
> Acme mailing list
> Acme@ietf.org
> https://www.ietf.org/mailman/listinfo/acme
>
_______________________________________________
Acme mailing list
Acme@ietf.org
https://www.ietf.org/mailman/listinfo/acme

Reply via email to