| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| cert-manager.yaml | 2026-10-23 | 1.0 MB | |
| cert-manager.crds.yaml | 2026-10-23 | 997.5 kB | |
| README.md | 2026-10-23 | 2.9 kB | |
| v1.21.3 source code.tar.gz | 2026-10-23 | 3.5 MB | |
| v1.21.3 source code.zip | 2026-10-23 | 4.6 MB | |
| Totals: 5 Items | 10.2 MB | 0 | |
cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.
v1.21.3 removes trust in the compromised eMudhra CA (see eMudhra Compromise). The updated base images no longer include the "emSign ECC Root CA - G3" root certificate. Go 1.26.10 also makes crypto/x509 reject certificate chains that pass through the compromised intermediates (CVE-2026-111943).
It also fixes an ACME ARI renewal loop, stops the controller copying a private key from a Secret that the Certificate does not own, and quotes the proxy values in the Helm chart. It updates Go and several dependencies to fix reported security vulnerabilities.
All users should upgrade.
Changes by Kind
Bug or Regression
- Added
status.acme.ari.certIDto track issuance of new certs and re-fetch ARI from CA. This fixes a renewal loop where a stale ARI window from the previous certificate triggered repeated re-issuance until the CA rate limit was hit. (#9292, @hjoshi123) - Helm chart: quote the
http_proxy,https_proxyandno_proxyvalues when rendering the controller Deployment env vars, so values like*.example.comno longer break the manifest. (#9407, @pujitha24) - The
requestmanagerandissuingcontrollers now only consume the Secret named bystatus.nextPrivateKeySecretNamewhen it carries thecert-manager.io/next-private-keylabel and is owned by the Certificate, matching the invariant thekeymanagercontroller already enforces. Previously a principal able to write thecertificates/statussubresource, but not to read Secrets, could name any Secret in the namespace and have its private key copied intospec.secretName. Thekeymanagercontroller no longer creates the next private key Secret under the name instatus.nextPrivateKeySecretName. It always uses a generated name, records aNotOwnedWarning event when the field names a Secret it does not own, and repoints the field at the Secret it owns rather than deleting that Secret when the two disagree. The Secret named byspec.secretNameis never treated as a next private key Secret, even ifspec.secretTemplatelabels it as one. (#9368, @wallrj)
Other (Cleanup or Flake)
- Upgrade Go to 1.26.9, fixing CVEs in the crypto/tls, net/http, net/textproto and html/template packages. (#9444, @wallrj-cyberark)
- Upgrade Go to 1.26.10, fixing a CVE in the crypto/x509 package. (#9501, @wallrj-cyberark)
- Bump
golang.org/x/netto v0.60.0 to fix reported security vulnerabilities (#9451) - Bump
go.opentelemetry.io/otel/exporters/otlp/otlptraceandotlptracegrpcto v1.45.0 to fix a reported security vulnerability (#9374, [#9375]) - Update distroless base images, removing the compromised "emSign ECC Root CA - G3" root certificate (#9351, [#9414], [#9493], [#9495])