Re: [Acme] DNS challenge spec doesn't support CNAME model

Andrew Ayer <agwa@andrewayer.name> Fri, 18 December 2015 01:12 UTC

Return-Path: <agwa@andrewayer.name>
X-Original-To: acme@ietfa.amsl.com
Delivered-To: acme@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6AB5A1B31A4 for <acme@ietfa.amsl.com>; Thu, 17 Dec 2015 17:12:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.002
X-Spam-Level:
X-Spam-Status: No, score=-2.002 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham
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 uWOHImzEATn9 for <acme@ietfa.amsl.com>; Thu, 17 Dec 2015 17:12:16 -0800 (PST)
Received: from alcazar.beanwood.com (alcazar.beanwood.com [IPv6:2600:3c00:e000:6c::1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 66FCB1B31A6 for <acme@ietf.org>; Thu, 17 Dec 2015 17:12:16 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=andrewayer.name; s=alcazar2; t=1450401133; bh=H/hbC8Ienk47XNjR7qmpHUydOr/15zFKYZGESgcVSrM=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=bhfhMWSgmCO6gbPXkV5mFMUAqMTuZPZmD8XwPMni9Tdnl5tsHNw/9gJG4AJC+e3aR hFib89sP/J1fXS5K7g8NfgMeinDZWETvPX3rPq716g73Qxy1MsVQsDHwPhP+kPKjJb nwrOXsizPxvVgRrYzlEOIDTtHRM8Lo6+ytO0Pw9353zENRO9la9yaAlE2hc77dgJWF UVjM4giCMPEYityd48lv4gC97LmyRzkWDzYCBHYC3DBArx5xuihVUnXiIbF13mBlOE Fe98iTquGTT8srn/Bdao5CpnBfe+p4g3xLY2FKF5W+nPf7h8N21bCffhNh6YBEVhKL h1rWJ/nw54RFA==
Date: Thu, 17 Dec 2015 17:11:14 -0800
From: Andrew Ayer <agwa@andrewayer.name>
To: Eric Mill <eric@konklone.com>
Message-Id: <20151217171114.9e4851effa0c5223e5c3d83b@andrewayer.name>
In-Reply-To: <CANBOYLU9HgD+-Dz=LbKaEBNfnPJAF+e=SsLS8vDwOPf3jup8+Q@mail.gmail.com>
References: <CANBOYLWRn_k1LoMx3pgQx=0spM8VQMXen8DuOx44ksBtWjdHUA@mail.gmail.com> <20151217081948.153cafa35132a31a44794cb7@andrewayer.name> <CANBOYLU9HgD+-Dz=LbKaEBNfnPJAF+e=SsLS8vDwOPf3jup8+Q@mail.gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit
Archived-At: <http://mailarchive.ietf.org/arch/msg/acme/UavsmdFCdzvrBtNdRhx97aUuKKU>
Cc: acme@ietf.org
Subject: Re: [Acme] DNS challenge spec doesn't support CNAME model
X-BeenThere: acme@ietf.org
X-Mailman-Version: 2.1.15
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, 18 Dec 2015 01:12:18 -0000

On Thu, 17 Dec 2015 17:40:42 -0500
Eric Mill <eric@konklone.com> wrote:

> On Thu, Dec 17, 2015 at 11:19 AM, Andrew Ayer <agwa@andrewayer.name>
> wrote:
> 
> > On Thu, 17 Dec 2015 02:23:20 -0500
> > Eric Mill <eric@konklone.com> wrote:
> >
> > > I think that ACME should revisit the DNS specification and avoid
> > > using a prefix for the TXT validation, to enable this use case.
> >
> > I disagree, because of a major restriction that DNS places on
> > CNAMEs: CNAMEs cannot coexist with other record types.  If ACME
> > didn't use prefixes, and you CNAME'd blog.ericmill.com over to
> > Tumblr, you would lose the ability to yourself complete a DNS
> > challenge for blog.ericmill.com, since no other record type could
> > coexist with that CNAME.  This would pose a major problem for users
> > of third-party services which do support TLS with user-provided
> > certs but don't implement ACME.
> >
> > Meanwhile, there is a simple solution that does enable your use
> > case: Tumblr can ask you to also CNAME
> > _acme-challenge.blog.ericmill.com over to them.  It's slightly
> > inconvenient to have to provision two CNAMEs instead of one, but
> > this seems preferable to forcing some users to choose between
> > CNAMEing to a third-party service and being able to use ACME
> > themselves.

Let me expand on this, in case others weren't sure what I was
proposing: the _acme-challenge.blog.ericmill.com CNAME would point to a
TXT record maintained by the third-party blog service containing the
ACME challenge response.  The third-party service would be responsible
for updating the TXT record as necessary; the user would only need to
set up the CNAME in their DNS once.  That's pretty easy for new users,
who have to add a CNAME to the third-party service anyways, but I
acknowledge that it would present a hurdle when deploying HTTPS to
existing users.

> Yes, but this forces users to do the work of adding a second CNAME
> that points to the third party service, and prevents the service from
> doing it themselves.
> 
> The user base that would *benefit* from keeping the prefix consists of
> users who want to CNAME their domain to a service (instead of full DNS
> delegation) but who wish to obtain a cert themselves and then upload
> that certificate to the service they've CNAMEd their domain to. That
> user base sounds relatively small to me -- certainly smaller than the
> number of users who currently use (or would use) custom domain
> support on third party services.

These third party services do have an option that would avoid the need
for their users to add a second CNAME: they could use the HTTP or TLS SNI
challenges.  This would require extra engineering work, as they would need
to coordinate the installation/configuration of ACME challenge responses
across a fleet of servers as opposed to changing a DNS record. However,
I suspect that the services with large userbases that you're concerned
about are likely to have the engineering resources needed to implement
HTTP or TLS SNI.  In contrast, a small- or medium-scale operator with
CNAMEs pointing to cloud load balancers or other infrastructure services
might find HTTP or TLS SNI too inconvenient, and these are the operators
who would be forced to use HTTP or TLS SNI if the prefix were removed.

> To me, it seems like we'll get more widespread use of ACME (and HTTPS
> adoption) by allowing large services to just "flip the switch" for
> everyone, rather than involving the user in this decision.
>
> The ideal would be to allow both use cases! So perhaps there's a way
> I'm not thinking of, or perhaps we could split this into two separate
> DNS-based validation methods, to support both kinds of uses.

Indeed, since there are two use cases, perhaps there should be two DNS
challenges, or the DNS challenge should simply be defined to check both
with and without a prefix.

Regards,
Andrew