Thanks for the continued discussion, all! Replies to multiple emails inline.

On Tue, Sep 19, 2023 at 4:17 PM Ben Burkert <benburk...@anchor.dev> wrote:

> The way we solve this is at the intermediate CA level, which we refer to
> as a SubCA. Each SubCA is an intermediate CA that issues end entity
> certs, and a template that sets a common set of properties of the end
> entity certs that it issues. For example, when creating a SubCA you can
> specify the expiry time (as a duration), key usage and other extensions,
> and allowed DNS/IP naming rules (which can turn into name constraints on
> the intermediate).


 Tying profiles to intermediates is interesting, but difficult in the
public WebPKI context, where generating new intermediates means accessing
the offline Root HSM. That would make creating new profiles significantly
more difficult.

Also, relying on EAB for profile selection is suboptimal for CAs that have
never needed EAB, like Let's Encrypt.

On Mon, Oct 9, 2023 at 3:10 AM Deb Cooley <debcool...@gmail.com> wrote:

> When a request is made, as long as the CSR matches the options we have
> given them in the profile, the cert is issued. I think this old school
> method should scale to ACME without too much trouble.
>

>From what Let's Encrypt saw when launching, relying on CSRs to determine
profiles was deeply fraught and error prone. This is why LE ignores
everything in the CSR except for 1) the names (as mandated by RFC 8555), 2)
the public key, and 3) the ocspMustStaple extension. As a simple example,
it's a very common mistake for an ACME client to produce a CSR with a
validity period 1 second greater than intended (because the validity period
is inclusive of the notAfter timestamp), which would then not match the
profile and be rejected. Personally, I'd rather move in the direction of
removing CSRs from the ACME protocol altogether, than enshrining even more
profile selection within them.

But even more to the point, this doesn't describe how the client selects a
profile from amongst those advertised. Are you suggesting a combination of
the approach I described (a profile name in the newOrder request) and CSRs
to fine-tune options within that profile?

On Tue, Sep 19, 2023 at 5:33 PM Matthew McPherrin <mattm=
40letsencrypt....@dmarc.ietf.org> wrote:

> My personal opinion here is that adding a profile field to the Order
> object is likely to hamper client adoption, and as Ben just said, makes
> configuration more difficult if CAs don't have matching profiles.
>
> An alternative approach that I believe has been used is adding URL
> parameters to the directory URL, as Aaron mentioned in his initial email.
>
> I believe that adding parameters to directory URLs requires no additional
> standardization work, and Let's Encrypt can add a profile parameter
> immediately.
>

Let's Encrypt is now considering going in this direction. Given that it
requires zero client development, no standardization, and has been
effectively used by at least one other CA, the "directory URL query
parameters" approach seems very tempting. I personally would still like to
include some sort of profile selection in ACME itself, but maybe this work
will be rolled into my larger thoughts for an ACME-bis that takes into
account some of the things we've learned over the last eight years.

Aaron
_______________________________________________
Acme mailing list
Acme@ietf.org
https://www.ietf.org/mailman/listinfo/acme

Reply via email to