The POST-as-GET mess started because Adam Roach pointed out that the "orders" URL (listing all of an accounts orders), in some non-WebPKI contexts, could expose information that shouldn't be exposed.

There are two possible fixes for this:

The narrow fix -- Remove "orders." No one implements it, and this is the least disruptive option to a mature spec.

The broad fix -- Recognize that the problem with "orders" is merely a symptom of the fact that we designed a protocol that needlessly couples HTTP semantics (GET vs POST) with security properties (authenticated vs authenticated). Make structural changes to the protocol so we can simply authenticate everything and not have to decide, for each request, whether it should be authenticated or not.


I'm not excited to implement the broad fix: It's a significant disruption to an already-stable ecosystem. However, I'm willing to push through that disruption and do the work, if we wind up with a significantly better protocol - one that is consistent about how it authenticates everything. I'd also be happy to implement the narrow fix - it's zero work.

However, I can't accept a halfway fix. It's all of the work, with none of the benefit. For the same reason that certificates are safe to GET, so are authzs, challenges, and individual order URLs. Why would we go through the significant hassle of changing those, but not certificates?

On 10/06/2018 02:27 PM, Richard Barnes wrote:
I'm not hard set against this change, I just don't see much benefit.

Allowing GETs for certificate URLs is so low-risk that we weren't going to access-control it at all until a couple weeks ago.  Now it's so high-risk that we need to REQUIRE authentication?  That's "REQUIRED" in the RFC 2119 sense, since higher up in the section, it says that servers MUST return 405 if they get a GET, except as allowed in that section.

There are reasonable use cases for GETs.  STAR is one, but you could imagine non-auto-renewed cases as well.  There's no security reason to cut off those GETs, so I don't understand what value we're conserving here.  The PR says that having GETs complicates the security analysis, but this is not some inner part of the protocol, it's the output.

The only argument that seems at all cogent here is that we don't have any up-front signaling for whether a server supports GET or not, just the error code.  So clients have to guess.  Maybe that's enough to motivate removing it for now; a later doc could come along and say "allow GETs and signal it with this field in the meta object".  But if we do that, we should be clear that we're removing GET to keep the protocol flow clean, not for any security reason.

--Richard



On Sat, Oct 6, 2018 at 12:53 PM Eric Rescorla <e...@rtfm.com <mailto:e...@rtfm.com>> wrote:

    Speaking as Area Director: there is no process problem with this
    reference. Of course, it's a WG decision whether it's advisable.

    -Ekr


    On Sat, Oct 6, 2018 at 8:31 AM Salz, Rich <rs...@akamai.com
    <mailto:rs...@akamai.com>> wrote:

        In order to address an issue raised during IESG review,
        unauthenticated GET for ACME server resources was changed to a
        simple POST that had a signed message body, providing
        authentication. Some raised the issue that they still wanted
        GET for certificates, as they’re public information and that
        sometimes a different process (without the account
        credentials) might be involved in the deployment workflow.
        STAR was mentioned as an example.

        There is now concern about calling out STAR, as it is still a
        WG draft and the full extent of its requirements are not known.

        If you have anything else to add to this discussion, please do
        so now.

        diff --git a/draft-ietf-acme-acme.md b/draft-ietf-acme-acme.md

        index 26eeeef..f1ca93f 100644

        --- a/draft-ietf-acme-acme.md

        +++ b/draft-ietf-acme-acme.md

        @@ -463,17 +463,6 @@ resources (see {{resources}}), in
        addition to POST-as-GET requests

        for these resources. This enables clients to bootstrap into the

        ACME authentication system.

        -The server MAY allow GET requests for certificate resources in

        -order to allow certificates to be fetched by a lower-privileged

        -process, e.g., the web server that will use the referenced

        -certificate chain. (See {{?I-D.ietf-acme-star}} for more advanced

        -cases.)  A server that allows GET requests for certificate
        resources

        -can still provide a degree of access control by assigning them

        -capability URLs {{?W3C.WD-capability-urls-20140218}}.

        -As above, if the server does not allow GET requests for a given

        -resource, it MUST return an error with status code 405
        "Method Not

        -Allowed" and type "malformed".

        -

        ## Request URL Integrity

         It is common in deployment for the entity terminating TLS for
        HTTPS to be different

        _______________________________________________
        Acme mailing list
        Acme@ietf.org <mailto:Acme@ietf.org>
        https://www.ietf.org/mailman/listinfo/acme

    _______________________________________________
    Acme mailing list
    Acme@ietf.org <mailto: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

Reply via email to