--
You received this message because you are subscribed to the Google Groups "Public (CA/B Forum)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to public+un...@groups.cabforum.org.
To view this discussion visit https://groups.google.com/a/groups.cabforum.org/d/msgid/public/PH0PR17MB4923EBDCB8BCDD7BF21BDAA1DA41A%40PH0PR17MB4923.namprd17.prod.outlook.com.
My personal stance on this, is that public CA’s shouldn’t even put their hands in issuing ClientAuth-only certificates.
It should be limited to S/MIME certificates as today.
Here is why:
In a internal corporate environment, the security model is not ”who it is”. The security model is more ”It is the same person who I hired” – like a cookie.
Relying on a public CA for this, breaks that link.
Remember that theres multiple persons with the same name. For example, I have a S/MIME certificate I sign this mail with , which is issued to ”Sebastian Robin Nielsen in Sweden”
CN = Sebastian Robin Nielsen
G = Sebastian Robin
SN = Nielsen
C = SE
But if you see two ClientAuth certificates (with no email adress) for ”Sebastian Robin Nielsen in Sweden” – is it the SAME Sebastian Robin Nielsen in Sweden?
This is why trusting a public CA for internal ClientAuth is pretty dangerous, and should never be done by any company.
You could trust the email adress, because its a unique token – then you know its really ”that particular” Sebastian Robin Nielsen – because the other one has another email address – but then you can use a S/MIME certificate with ClientAuth as today. Every S/MIME certificate today includes ClientAuth.
So the CN, G, SN and C fields of a certificate is only useful to attach a real world identity – if you already have a unique token (like in this case, seba...@sebbe.eu ) that can be used to identify a unique instance of the person in question.
I can only see one use for a ClientAuth certificate issued by a Public CA, and that is logging into public websites, like banks and such.
But every country, and also EU, has already digital solutions that works for this, including apps and other infrastructure.
And same issue here – if you present a ClientAuth certificate containing a specific name – how do you know its the same person (and you should give him access to an already present account) or if its a new person (where you should create a new account for him)?
So im totally against this idea, and don’t see any practical use cases without also introducing huge security risks.
Let ClientAuth be handled internally by companies as today.
Best regards, Sebastian Nielsen
--
Nick, all,
I'm somewhat on the fence on this one, but I think the discussion so far is conflating two very different use cases that deserve separate treatment.
The human identity case is the relatively easy part
Sebastian makes a fair point about name collisions. I'm Ryan Hurst, the security practitioner, and there's also Ryan Hurst the actor (Remember the Titans, Sons of Anarchy). A public CA asserting "Ryan Hurst" in a DN doesn't help a relying party figure out which one of us is authenticating. S/MIME addresses this through the rfc822Name in the SAN, which is at least unique at the time of issuance, but unique isn't sufficient. The identifier also needs to be reachable. An email address is reachable, a social security number is not, and a DN of "Ryan Hurst, US" is neither unique nor reachable. The WebPKI's intent is to make things reachable in an authenticated way. DNS names and email addresses fit that model, DNs do not.
Even with email, there's a temporal problem. Addresses get reassigned, domains lapse, providers recycle accounts, and throwaway addresses exist by design. CAs can't monitor for reassignment, so these are inherently short-lived assertions. Broader questions around PII and auditability are really about how Key Transparency (https://datatracker.ietf.org/doc/draft-ietf-keytrans-protocol/) can be bolted into the ecosystem. I wrote about this here: https://unmitigatedrisk.com/?p=749
There is valuable work happening though. Ballot SMC015v2 enabling mDLs and EU digital identity wallets for S/MIME identity proofing, shows this evolving in a meaningful direction. Client authentication and signed email under S/MIME belong together. Apple has argued that emailProtection EKU should mean mandatory S/MIME BR compliance, closing the loophole where CAs omit email addresses to avoid the BRs. I think that's right.
One nuance. S/MIME bundles signing, authentication, and encryption, and I think that's right for the first two but not the third. Signing and authentication are real-time assertions that work well as short-lived credentials. Encryption is different. The key is bound to an identifier that may not be durable, and without frequent rotation, you risk bygone-SSL style (https://insecure.design/) attacks where a new holder of an email address could access messages intended for the previous one.
Browsers are actively looking to remove client auth from TLS certificates, and I don't disagree, given how poorly specified it has been. That signals whatever comes next needs to be much more tightly defined.
Bottom line. Human client auth is covered by S/MIME, browser-based client auth is on its way out for good reason, and a new WG doesn't need to revisit the human case.
Machine/service identity is the actual gap
Cross-organizational service-to-service authentication on the public internet is mostly handled today with API keys, OAuth client credentials, or IP allowlisting, all with well-known limitations. mTLS with publicly trusted client certs could fill a real gap, but only if the identity model is built correctly.
Many current uses are misplaced. A publicly trusted cert for payments.example.com tells you that the entity controlling that domain authenticated, nothing more. Public trust gives you an authenticated identity, not authorization. Organizations that conflate the two will accidentally open up access based solely on someone having obtained a client cert.
The examples collected so far, Cisco Expressway and EPP, are mostly legacy compatibility problems being fixed. The better foundation is authenticated service-to-service communication across organizational boundaries. For machines, name collisions largely disappear since DNS names are globally unique by design.
Nick, to your question about what parts of the DN the relying party verifies. There is no global X.500 directory, and even local directories matching DN structures don't exist in meaningful density. The better question is what SAN types are needed and what validation methods can we define for them.
Concrete SAN types for machine client auth
dNSName works today with no new validation methods needed:
payments-api.example.comerp-connector.supplier.example.netregistry-client.registrar.example.com (Maria's EPP use case, done properly)uniformResourceIdentifier SANs encode not just the organization but the specific service:
https://example.com/services/paymentsurn:example:service:billing:v2This URI-based approach isn't speculative. SPIFFE already uses URI SANs in Kubernetes mTLS contexts, proven and widely deployed within private PKI. Extending it to public trust for cross-organizational federation is a natural evolution. URI SANs can be validated through .well-known challenge methods (like ACME HTTP-01 scoped to a URI path) and ALPN-based methods, extending battle-tested ACME-era infrastructure rather than building from X.500-era assumptions.
If this moves forward, scope matters
I'm not advocating for or against a WG, just sharing how I think about this. But if the Forum takes this on, the scope needs to be narrow IMHO:
TL/DR: If this becomes formalized I think the foundation should be authenticated cross-organizational service communication, not backward compatibility with systems that conflated client and server auth.
--