Paul Wouters has entered the following ballot position for
draft-ietf-acme-ari-07: Discuss

When responding, please keep the subject line intact and reply to all
email addresses included in the To and CC lines. (Feel free to cut this
introductory paragraph, however.)


Please refer to 
https://www.ietf.org/about/groups/iesg/statements/handling-ballot-positions/ 
for more information about how to handle DISCUSS and COMMENT positions.


The document, along with other ballot positions, can be found here:
https://datatracker.ietf.org/doc/draft-ietf-acme-ari/



----------------------------------------------------------------------
DISCUSS:
----------------------------------------------------------------------

Thanks for this document. It can be a useful extension but I do have some
issues I would like to discuss / clarify

        Query the renewalInfo resource to get a suggested renewal window.
        Select a uniform random time within the suggested window.
        If the selected time is in the past, attempt renewal immediately.

This seems to skew to "now" which would only cause the ACME server more load
than without this extension (one GET and one actual renewal). Why not let the
client select a uniform random time between "now" and "end" if "now" > "start" ?

        it indicates both the earliest time and a target time.

It is really not the "earliest time" because an ACME server isn't going to
refuse it? I would rewrite this to just say "it indicates the desired target
time".

This does bring up a point of concern. Clients who do not implement this
have an advantage on an overloaded server compared to clients who do
implement this. For example, let's say some new industry certification
license says "certifiates MUST always be valid for at least two
more weeks".  Wouldn't it make more sense for the server to check the
"urgency" of the client request and when (too) busy, start rejecting to
renew those with plenty of lifetime left?

I am also not sure about the argument of revocation for timing. Either
the owner of the cert to be revoked knows this and is already in the
process of replacing the cert/private key, and it wants to get a new
cert issued "now", or it is completely unaware, and most likely whatever
caused the leak of the current cert/private key, would also leak this
renewed one. I don't think an ACME server can help with either cases by
issuing shorter calls to renew. These would also be certificate specific
and I understood this unauthenticated extension to be generic and based
on load, and not on specific individual certificate issues.

        Clients SHOULD set reasonable limits on the their checking interval. For
        example, values under one minute could be treated as if they were one
        minute, and values over one day could be treated as if they were one
        day.

This really does violate the "compliant clients MUST" clause :)

Security Considerations:

        This document specifies that renewalInfo resources MUST be exposed
        and accessed via unauthenticated GET requests, a departure from
        RFC8555's requirement

Where does it specify this, other then right here? This specification should be
outside the Security Considerations section. What I can find is:

        To request the suggested renewal information for a certificate,
        the client sends a GET request to a path under the server's
        renewalInfo URL.

Maybe a sentence can be added there that this GET request is unauthenticated, so
that an implementer does not accidentally send credentials of any kind? Maybe
even say that a server MUST reject any attempted authorized connections for
renewalInfo to ensure such badly implemented clients cannot prosper ?

Perhaps also a clarifying sentence can be added along the lines of:

        If an on-path attacker would force ACME clients to postpone renewal
        indefinately, a properly implemented client would ignore these when the
        lifetime of its certificate becomes critically low (eg 7 days ?).

I also feel this belongs more in Section 4.3.2 with some concrete advise to
implementers.

As for the last paragraph in the Security Considerations, it seems to specify
specific server behaviour that belongs in the formal specification instead of
as security example. If we look at the protocol requirement of the server to
tell the client "renew now", why not define this by either using a timestamp of
unix time 0 (eg 1970) or by introducing a third keyword along the "start" and
"end" in the suggestedWindow property, eg "fetch-now": "recommended" ? Using
some kind of fake time seems like a poor hack for a protocol, as the text in
the security considerations already admits to (but then tries to band-aid the
client)

Again, I feel this belongs in the base document specification and not in the
Security Consideration section.


----------------------------------------------------------------------
COMMENT:
----------------------------------------------------------------------

        Conforming clients MUST attempt renewal

I find this a bit weasel wording. How about:

        Clients SHOULD attempet renewal

Clearly, a client can have some overriding local policy concern that trumps the
ACME servers

        The keyIdentifier field of the certificate's AKI extension has the
        hexadecimal bytes
        69:88:5B:6B:87:46:40:41:E1:B3:7B:84:7B:A0:AE:2C:DE:01:C8:D4 as its
        ASN.1 Octet String value. The base64url encoding of those bytes is
        aYhba4dGQEHhs3uEe6CuLN4ByNQ=

There seems to be an endian swap in here? Perhaps this text should be clarified?
The same for the the certificate's Serial Number field in the next paragraph.

Maybe instead of:

        GET https://example.com/....

Use:

        GET https://acme-server.example.com/.....

Similar for the explanationURL value.

        Clients MUST stop checking RenewalInfo after a certificate is expired.

I would stay "MUST skip checking RenewalInfo after a certificate is expired and
immediately request a renewal."

        Clients MUST stop checking RenewalInfo after they consider a
        certificate to be replaced (for instance, after a new certificate
        for the same identifiers has been received and configured).

I would also avoid the "MUST stop" construct here. Perhaps:

        RenewalInfo MUST NOT be attempted for any certificate that has been
        replaced (for instance, after a new certificate for the same identifiers
        has been received and configured)



_______________________________________________
Acme mailing list -- acme@ietf.org
To unsubscribe send an email to acme-le...@ietf.org

Reply via email to