Subject: [Acme] Revoking certificates issued by an unknown ACME server

From: Hugo Landau <[email-masked]>
Date: Thu, 14 Jan 2016 15:27:47 +0000

So while implementing revocation in my ACME client, I came to the
following problem: how do you know which ACME server issued a
certificate?

Given an ACME server URL, one can obtain a certificate, but there is no
reliable way to do the reverse.

If you think about it, it might be desirable to be able to revoke a
certificate possessing nothing but the certificate. For example, suppose
you identify a misissued certificate for a domain you control. Under the
current ACME protocol, if you can prove control of that domain, you can
revoke the certificate; however, this requires you to know what server
issued it.

Not sure what the good solutions to this are. One would be to include
the directory URL as an X.509 or OCSP extension, though that bloats the
certificate/response. Another might be to reuse the OCSP responder URL,
so that given an OCSP endpoint, one can obtain the ACME server URL, or
at least one suitable for revocation.

Something like:

  Normal OCSP Request:
  GET http://ocsp.example.com/ocsp/MFMwUTBPME0wSzAJ

  Revocation Location OCSP Request:
  GET http://ocsp.example.com/ocsp/acme-revoker/MFMwUTBPME0wSzAJ

  302 Found
  Location: https://acme-staging.letsencrypt.org/directory

Thoughts?

Hugo Landau

---

From: Martin Thomson <[email-masked]>
Date: Fri, 15 Jan 2016 13:55:42 +1100

Is there any reason why you couldn't rely on a search engine for this?
 That is, search for "acme endpoint <intermediate CN>" and thereby
arrive at a value.  That's the "low tech" alternative to packing the
URL in the ee or intermediate cert.

On 15 January 2016 at 02:27, Hugo Landau <[email-masked]> wrote:
> _______________________________________________
> Acme mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/acme

---

From: Hugo Landau <[email-masked]>
Date: Fri, 15 Jan 2016 06:26:49 +0000

This isn't sanely automatable.

It's unlikely that this will pose an issue if a human wants to figure
out the issuing server. But as things stand to automate things you'd
need to maintain a database of CAs to directory URLs.

---

From: Martin Thomson <[email-masked]>
Date: Fri, 15 Jan 2016 18:00:36 +1100

> This isn't sanely automatable.

Correct.  But it doesn't require any work to define.  Do you have
evidence that suggests this scenario (a certificate issued by an ACME
server needs revocation by someone other than the one who requested
the certificate) would be commonplace enough to warrant automation?

---

From: "Salz, Rich" <[email-masked]>
Date: Fri, 15 Jan 2016 16:04:28 +0000

> It's unlikely that this will pose an issue if a human wants to figure out the
> issuing server. But as things stand to automate things you'd need to maintain
> a database of CAs to directory URLs.

I don't see a problem with that.  You've got a cert, you can figure out the issuer, and then you go to your table, csv, spreadsheet, appconfig, whatever and see where the ACME server is that you first contacted.

On the other hand, if you want to define an authorityInfoAccess type of "acmeServer" kind of analogous crlDP, go ahead and let's see how takes it up.