Re: [Acme] Issuing certificates based on Simple HTTP challenges

Michael Wyraz <michael@wyraz.de> Mon, 14 December 2015 22:47 UTC

Return-Path: <michael@wyraz.de>
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 8557F1A024E for <acme@ietfa.amsl.com>; Mon, 14 Dec 2015 14:47:36 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.559
X-Spam-Level:
X-Spam-Status: No, score=-1.559 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, HTML_MESSAGE=0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=no
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 uWd92x_PXjlL for <acme@ietfa.amsl.com>; Mon, 14 Dec 2015 14:47:33 -0800 (PST)
Received: from mail.wyraz.de (web.wyraz.de [37.120.164.129]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 33DCF1A0235 for <acme@ietf.org>; Mon, 14 Dec 2015 14:47:33 -0800 (PST)
Received: from localhost (localhost [127.0.0.1]) by mail.wyraz.de (Postfix) with ESMTP id B3872A0662 for <acme@ietf.org>; Mon, 14 Dec 2015 23:47:30 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at web.wyraz.de
Received: from mail.wyraz.de ([127.0.0.1]) by localhost (web.wyraz.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zIwA9WoHpdaz for <acme@ietf.org>; Mon, 14 Dec 2015 23:47:29 +0100 (CET)
Received: from [192.168.1.200] (p57857E5C.dip0.t-ipconnect.de [87.133.126.92]) (Authenticated sender: michael@wyraz.de) by mail.wyraz.de (Postfix) with ESMTPSA id 43EFCA065E for <acme@ietf.org>; Mon, 14 Dec 2015 23:47:29 +0100 (CET)
To: acme@ietf.org
References: <CAF+SmEpOLoaREymVhi=qOUg2opz1vKzzNp6tGrDTZAjYSKFDkg@mail.gmail.com> <566F15DC.7090607@wyraz.de> <6B677A87-C6A0-485E-80DF-24960D585F46@coderanger.net> <566F2CB5.90402@wyraz.de> <89774336-0BA6-48FC-821D-1E8F3ED9AC14@coderanger.net>
From: Michael Wyraz <michael@wyraz.de>
X-Enigmail-Draft-Status: N1110
Message-ID: <566F4701.7050308@wyraz.de>
Date: Mon, 14 Dec 2015 23:47:29 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0
MIME-Version: 1.0
In-Reply-To: <89774336-0BA6-48FC-821D-1E8F3ED9AC14@coderanger.net>
Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="Sb1EW5ffuhCaxfS9q57pw9tsNlTgfjRJf"
Archived-At: <http://mailarchive.ietf.org/arch/msg/acme/2gtUABzDckpypPKOrmrg97-qKzY>
Subject: Re: [Acme] Issuing certificates based on Simple HTTP challenges
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: Mon, 14 Dec 2015 22:47:36 -0000

I thought about all the DNS stuff and came to the conclusion that
focussing ssl certs for https only and ignoring all the rest may cause
further security issues.
E.g. if I delegate http (via A-record or CNAME) to someone else, he can
now create valid ssl certs for my mail server which I did not delegate.
IMO A-record should be dedicated to http(s) (for legacy reasons, see
http://stackoverflow.com/questions/9063378/why-do-browsers-not-use-srv-records)
and all other services (inclusing ACME) should use their own srv records.

Looks like a decision between comfort and security - let's bet what will
win...

> Fair, adding a DNS-level opt-out would be a reasonable addition for future iterations, but not a hugely pressing issue given the expected use cases.
>
> --Noah
>
>> On Dec 14, 2015, at 12:55 PM, Michael Wyraz <michael@wyraz.de> wrote:
>>
>> So just leave out the part with "then switch completely from A to SRV" and allow both. This gives people the comfort to use A/CNAME stuff while others who prefer security use SRV. Both are happy, problem solved ;-)
>>> Using normal A/CNAME records matches the default use case of HTTPS a lot more smoothly and allows a lot of cool transparent upgrade stuffs from folks like DreamHost or Fastly that already do the CNAME setup as part of user on-boarding and can run http-01 on the behalf of the user to set them up on an SNI termination. If all the major CDNs did this, it would be worth the negative issues where HTTP is delegated to an untrusted service. If TLS ever grows per-service restrictions that would be appropriate here, but that is waaaay out of scope for ACME I would think :-/
>>>
>>> --Noah
>>>
>>>
>>>> On Dec 14, 2015, at 11:17 AM, Michael Wyraz <michael@wyraz.de>
>>>>  wrote:
>>>>
>>>> Julian,
>>>>
>>>> the issue your described here is caused by the assumption that any the A-record points to a host that should be allowed to create certs for that domain. IMO a solution would be simple: use some special SRV record that points to a service that does the challenge. Allow users to set this record to something like "none" to completely disallow ACME-based cert generation. Use A-record as fallback for a given time (e.g. one year), then switch completely from A to SRV,
>>>>
>>>> Problem solved ;-)
>>>>
>>>> And it's almost as comfortable as using the A-record because it needs just one single additional step, no change of the client, absolutely minimal change to the server, no extra software or support for dynamic DNS updates or such.
>>>>
>>>> As a side effect it solves many problems with ACME in complex environments like geo-distributed dns.
>>>>
>>>> Kind regards,
>>>> Michael.
>>>>
>>>>
>>>>
>>>>
>>>>> Hello,
>>>>>
>>>>> maybe I am just a naive concerned user, but in my opinion there is one major issue with the Simple HTTP challenge and possibly other challenges, specified by ACME:
>>>>>
>>>>> Any host which is specified by an A/AAAA record of that domain zone can obtain trusted certificates in the name of the domain zone owner.
>>>>> Lets assume I host an private XMPP server using TLS on my own domain using an SRV record, and I point an A record to a third party hoster which hosts my public web blog.
>>>>> Now this third party hoster would be able to obtain signed certificates for my domain using ACME and use that to host an XMPP service on that domain using the standard port.
>>>>> Clients which trust that CA are now perfectly happy connecting to that entity.
>>>>>
>>>>> By creating an A record I ofcourse need to trust that host to some degree, but I still would expect the CA to verify if the requester has control over the DNS zone itself an not just over a single service running there.
>>>>>
>>>>> And consequently if it is valid to verify over HTTP, then maybe another CA validates the domain ownership by a mail service/MX record, and a third one over XMPP/SRV.
>>>>>
>>>>> This effectively means, as a domain zone admin, I have to trust every single service I define, not just to properly deliver this service, but also not to exploit his ability to obtain signed certificates in my name.
>>>>>
>>>>> Also you rely on the fact that on UNIX only root can bind on port 80 and 443. Lets assume there is an OS out there which does not enforce this restriciton,
>>>>> now any user on that host is able to obtain signed certificates for that domain.
>>>>>
>>>>> Maybe I missed something here, but overall this seems to be a very bad idea to automatically issue certificates without requiring a change in the actual DNS zone the certificate is issued for.
>>>>>
>>>>> Kind regards,
>>>>> Julian Dropmann
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> 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
>
>
> _______________________________________________
> Acme mailing list
> Acme@ietf.org
> https://www.ietf.org/mailman/listinfo/acme