Everything worked on Monday. On Tuesday the renewal job ran, and now a partner's API gateway rejects your calls, your mail relay cannot authenticate, or two services stop talking. The logs say something like "unsupported certificate purpose" or "certificate not valid for client authentication". Nothing in your code changed. The certificate did.
What changed
A certificate carries a list of allowed uses called Extended Key Usage (EKU). For a public website certificate the important ones are:
- serverAuth: "this certificate can identify a server" (normal HTTPS).
- clientAuth: "this certificate can identify a client" (used in mutual TLS).
For years, many public CAs put both on the same certificate. That let teams use one cheap certificate for HTTPS and for client authentication. The browser root programs now require TLS server certificates to carry only serverAuth, and CAs are following. Chrome's root program set a deadline for June 2026, Let's Encrypt stopped including clientAuth in its default profile in February 2026, and other CAs, as reported by industry writers, have final cutoffs in early 2027.
The server side keeps working, because the certificate still says serverAuth. Only the client role breaks, and it breaks at renewal, not on the announced date, which is why it feels random.
Check your certificate
openssl x509 -in cert.pem -noout -text | grep -A1 "Extended Key Usage"
A dual-purpose certificate shows:
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
A new server-only certificate shows only TLS Web Server Authentication. If you use that certificate as a client and the second item is missing, that is the cause.
For a live server:
echo | openssl s_client -connect host:443 -servername host 2>/dev/null \
| openssl x509 -noout -text | grep -A1 "Extended Key Usage"
Also look at the other side of the connection: a peer that "requires a client certificate" may verify the purpose, and that check is what fails.
Where it hurts
- Mutual TLS between your service and a partner, or between internal services that use public certificates.
- Server-to-server protocols where each side acts as client and server with the same certificate, such as federation in some chat or messaging systems.
- VPN and gateway logins that use a public certificate for device authentication.
- Appliances that present their public certificate when they connect out.
Fix options
- Use a private CA for client certificates. If both ends are under your control or by agreement, run a small internal CA and issue clientAuth certificates yourself. Tools such as step-ca or cfssl are built for this. This is the long-term answer: public CAs are meant for proving a server's identity to the public, not for identifying your clients.
- Buy client certificates from a CA that still issues them. Some CAs offer dedicated client authentication certificates, or kept dual use until their announced cutoff. This buys time, not a solution.
- Replace mTLS where you can. If the real need is "know who is calling", tokens, signed requests, or mTLS with a private CA can all do it.
- Separate roles. Where one certificate played both roles, use two: a public server certificate for HTTPS and a private client certificate for client authentication.
Ask your partner, if they run the verifier: they may be able to trust your private CA.
A short checklist
- Search your configs for
ssl_verify_client,client_certificate,SSLVerifyClient,mutual TLS, andcert=/key=in client code. - For every match, run the OpenSSL check above.
- List each system that uses a public certificate as a client.
- Move those to a private CA, and test with a server-only certificate before the next renewal.
- Subscribe to your CA's announcements for exact dates.
Related
- Why certificates are getting shorter: another change that makes manual certificate handling risky.
Sources
- The public CA clientAuth EKU sunset: what Apache deployers need to know (Apache Software Foundation)
- Public TLS certificates and client authentication (WorkOS)
- Dual-EKU TLS certificate removal: what it means for mTLS (SSL Insights)
Dates differ between sources; confirm with your CA. Information as of November 5, 2026.