Common purpose OIDs (RFC 5280 §4.2.1.12): 1.3.6.1.5.5.7.3.1 serverAuth, …3.2 clientAuth, …3.3 codeSigning, …3.4 emailProtection, …3.8 timeStamping, …3.9 OCSPSigning. Many verifiers treat an EKU in an intermediate as a constraint on everything below it, which is how root programs keep TLS, S/MIME and code-signing hierarchies separate.
Public TLS is moving to single-purpose hierarchies. The Chrome Root Program Policy (version 1.8) requires subscriber certificates issued on or after 15 March 2027 to assert only id-kp-serverAuth, and subordinate CAs disclosed from 15 June 2026 likewise; major CAs stopped adding clientAuth to TLS certificates in 2026. Services that used public TLS certificates as mTLS client certificates need a private CA.
A missing or wrong EKU produces errors such as Go's x509: certificate specifies an incompatible key usage or OpenSSL's unsupported certificate purpose.