Re: [Acme] Optional "Wildcard" authorization field

Brad Warren <bmw@eff.org> Fri, 02 March 2018 20:46 UTC

Return-Path: <bmw@eff.org>
X-Original-To: acme@ietfa.amsl.com
Delivered-To: acme@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5903F12D7F8 for <acme@ietfa.amsl.com>; Fri, 2 Mar 2018 12:46:17 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.011
X-Spam-Level:
X-Spam-Status: No, score=-7.011 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=eff.org
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PxdnYZxyCJn7 for <acme@ietfa.amsl.com>; Fri, 2 Mar 2018 12:46:15 -0800 (PST)
Received: from mail2.eff.org (mail2.eff.org [173.239.79.204]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 78A3A127369 for <acme@ietf.org>; Fri, 2 Mar 2018 12:46:15 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=eff.org; s=mail2; h=Message-Id:In-Reply-To:To:References:Date:Subject:Mime-Version: Content-Transfer-Encoding:Content-Type:From:Sender:Reply-To:Cc:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=JSz2boB1gBFeak7HivRBurZkEgYZP+WjQELSD+yrRGE=; b=lxNCrfxSllj7NO+PjcmaIoaFMR FtV3sha5tjgLg7Y04i645o+AUrCf+LKoQRILEV2ZNQUKDQM3OL9p5ooakzg0iHle/XMRjBkWUhuYG PAPlB3a4h0PaTTueBELDDEn7ScMw6E02R6ppTv7yb2bhGBFl9An2eAAfs6dKgrNflQLQ=;
Received: ; Fri, 02 Mar 2018 12:46:15 -0800
From: Brad Warren <bmw@eff.org>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (Mac OS X Mail 11.2 \(3445.5.20\))
Date: Fri, 02 Mar 2018 12:46:14 -0800
References: <CAKnbcLjuVPZa5P2FZa_cKAGmk1dP6ezrv3AgWSp9KK5HCzxPbg@mail.gmail.com> <CAL02cgQwZzKXvPsWr=tAbB-bi2s-gw3+TtJwkawHoEEb=6MiFw@mail.gmail.com> <CAKnbcLiQdjaPN32j8WOo5vhvfoTvHPYZj5pictb47ZTWvmJXYA@mail.gmail.com> <D423B0BF-E0A8-462F-8937-BB70EF490314@felipegasper.com> <9ae273bf-f762-3bdf-6c5f-40bdea113d1c@ml.shredzone.de>
To: acme@ietf.org
In-Reply-To: <9ae273bf-f762-3bdf-6c5f-40bdea113d1c@ml.shredzone.de>
Message-Id: <AC5CB86B-4408-437D-B10E-F81FC7B80045@eff.org>
X-Mailer: Apple Mail (2.3445.5.20)
Archived-At: <https://mailarchive.ietf.org/arch/msg/acme/HrOzzYcWs9Mf2y8CqazTuQAau_E>
Subject: Re: [Acme] Optional "Wildcard" authorization field
X-BeenThere: acme@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Automated Certificate Management Environment <acme.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/acme>, <mailto:acme-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/acme/>
List-Post: <mailto:acme@ietf.org>
List-Help: <mailto:acme-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/acme>, <mailto:acme-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 02 Mar 2018 20:46:17 -0000

In a similar vein, another small but real world example where this being standardized would be useful is Certbot has the flag —allow-subset-of-names that causes it to not treat it as a failure if you cannot complete all authorizations and instead obtain a certificate only for the identifiers you were able to successfully obtain valid authorizations for. We currently don’t support this wildcards because we’re unable to differentiate an authorization for a wildcard from one for the base domain.
 
> On Mar 2, 2018, at 12:24 PM, Richard Körber <acme@ml.shredzone.de> wrote:
> 
> Hi!
> 
> I also see the problem that clients might get confused because there are
> seemingly two authentications for the very same domain ("example.com").
> Without a proper flag, they could only be distinguished by the different set
> of challenges, but that would assume knowledge of server internas.
> 
> Also, the client could actively validate the authorization having
> wildcard=true first, and then could check if it is still necessary to do the
> other authorization. Depending on the server implementation, if verifying the
> wildcard domain also validates the domain itself, it could save an unnecessary
> challenge round trip.
> 
> -- 
> Richard Körber
> 
> 
> Am 02.03.2018 um 19:28 schrieb Felipe Gasper:
>> One (fairly) obvious use of the “wildcard” flag is for status reporting without the context of the original newOrder. The client can thus more easily say:
>> 
>> Authorization for “*.example.com”: $message
>> 
>> … without having to correlate the authz object with the order.
>> 
>> -FG
>> 
>>> On Mar 2, 2018, at 12:32 PM, Daniel McCarney <cpu@letsencrypt.org> wrote:
>>> 
>>> Richard: That's up to the client and the situation. In the linked Certbot issues there were questions about error output/UX. In this case if the client saw an error attached to an authorization with the identifier `{ "type": "dns", "value": "example.com"}` and the authorization had `wildcard: true` the client could say "Failed to authorize *.example.com: blah blah blah" or otherwise use the knowledge to inform their actions (whatever they may be).
>>> 
>>> In general I think there will be reason for client developers will want to have a standardized way of understanding if an authorization corresponds to a wildcard identifier or not. I'm hopeful some client developers will chime in with more concrete examples, I'm a server-side grunt.
>>> 
>>> - Daniel / cpu
>>> 
>>> On Fri, Mar 2, 2018 at 12:29 PM, Richard Barnes <rlb@ipv.sx> wrote:
>>> Daniel: I don't have a strong objection here, but could you elaborate what the client is expected to do differently based on this flag?
>>> 
>>> On Fri, Mar 2, 2018 at 12:22 PM, Daniel McCarney <cpu@letsencrypt.org> wrote:
>>> Hi folks,
>>> 
>>> There is a slight disconnect with the current specification between identifiers in newOrder/newAuthz requests and identifiers in authorization objects. The former is allowed to include wildcard domains in the value of DNS type identifiers while the latter is forbidden. 
>>> 
>>> Let's Encrypt's implementation of ACME wildcard issuance guessed this might lead to confusion and introduced a non-standardized "Wildcard" boolean field in authorization objects. If true, then the identifier value in the authorization identifier is known to be the base domain corresponding to a wildcard identifier from the newOrder/newAuthz request.
>>> 
>>> I think it would be beneficial to the entire ecosystem if this optional "wildcard" authz field could be standardized so I've sent a small PR: https://github.com/ietf-wg-acme/acme/pull/402 Both Certbot and ACME4J have independently bumped into this disconnect, which helps justify the need.
>>> 
>>> - Daniel / cpu
>>> 
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> 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
>> 
>> _______________________________________________
>> 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