Releases: cert-manager/cert-manager
v1.19.1
cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.
We reverted the CRD-based API defaults for Certificate.Spec.IssuerRef
and CertificateRequest.Spec.IssuerRef
after they were found to cause unexpected certificate renewals after upgrading to 1.19.0. We will try re-introducing these API defaults in cert-manager 1.20
.
We fixed a bug that caused certificates to be re-issued unexpectedly if the issuerRef
kind or group was changed to one of the "runtime" default values.
We upgraded Go to 1.25.3
to address the following security vulnerabilities: CVE-2025-61724
, CVE-2025-58187
, CVE-2025-47912
, CVE-2025-58183
, CVE-2025-61723
, CVE-2025-58186
, CVE-2025-58185
, CVE-2025-58188
, and CVE-2025-61725
.
📖 Read the full 1.19 release notes on the cert-manager.io website before upgrading.
Changes since v1.19.0
:
Bug or Regression
- BUGFIX: in case kind or group in the
issuerRef
of a Certificate was omitted, upgrading to1.19.x
incorrectly caused the certificate to be renewed (#8175, @cert-manager-bot) - Bump Go to 1.25.3 to fix a backwards incompatible change to the validation of DNS names in X.509 SAN fields which prevented the use of DNS names with a trailing dot (#8177, @wallrj-cyberark)
- Revert API defaults for issuer reference kind and group introduced in 0.19.0 (#8178, @cert-manager-bot)
v1.18.3
cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.
We fixed a bug which caused certificates to be re-issued unexpectedly, if the issuerRef kind or group was changed to one of the "runtime" default values. We increased the size limit when parsing PEM certificate chains to handle leaf certificates with large numbers of DNS named or other identities. We upgraded Go to 1.24.9 to fix various non-critical security vulnerabilities.
📖 Read the full 1.18 release notes on the cert-manager.io website before upgrading.
Changes since v1.18.2
:
Bug or Regression
- BUGFIX: in case kind or group in the issuerRef of a Certificate was omitted, upgrading to 1.19.x incorrectly caused the certificate to be renewed (#8174, @cert-manager-bot)
- Bump Go to 1.24.9. Fixes the following vulnerabilities: CVE-2025-61724, CVE-2025-58187, CVE-2025-47912, CVE-2025-58183, CVE-2025-61723, CVE-2025-58186, CVE-2025-58185, CVE-2025-58188, CVE-2025-61725 (#8176, @wallrj-cyberark)
- Increase maximum sizes of PEM certificates and chains which can be parsed in cert-manager, to handle leaf certificates with large numbers of DNS names or other identities (#7966, @cert-manager-bot)
Other (Cleanup or Flake)
- Improve error messages when certificates, CRLs or private keys fail admission due to malformed or missing PEM data (#7964, @cert-manager-bot)
- Upgrades Go to v1.24.6 (#7974, @SgtCoDFish)
v1.19.0
cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.
⚠️ Known issues: The following known issues are fixed in v1.19.1:
This release focuses on expanding platform compatibility, improving deployment flexibility, enhancing observability, and addressing key reliability issues.
📖 Read the full release notes at cert-manager.io: https://cert-manager.io/docs/releases/release-notes/release-notes-1.19
Changes since v1.18.0
:
Feature
- Add IPv6 rules to the default network policy (#7726, @jcpunk)
- Add
global.nodeSelector
to helm chart to allow for a singlenodeSelector
to be set across all services. (#7818, @StingRayZA) - Add a feature gate to default to Ingress
pathType
Exact
in ACME HTTP01 Ingress challenge solvers. (#7795, @sspreitzer) - Add generated
applyconfigurations
allowing clients to make type-safe server-side apply requests for cert-manager resources. (#7866, @erikgb) - Added API defaults to issuer references group (cert-manager.io) and kind (Issuer). (#7414, @erikgb)
- Added
certmanager_certificate_challenge_status
Prometheus metric. (#7736, @hjoshi123) - Added
protocol
field forrfc2136
DNS01 provider (#7881, @hjoshi123) - Added experimental field
hostUsers
flag to all pods. Not set by default. (#7973, @hjoshi123) - Support configurable resource requests and limits for ACME HTTP01 solver pods through ClusterIssuer and Issuer specifications, allowing granular resource management that overrides global
--acme-http01-solver-resource-*
settings. (#7972, @lunarwhite) - The
CAInjectorMerging
feature has been promoted to BETA and is now enabled by default (#8017, @ThatsMrTalbot) - The controller, webhook and ca-injector now log their version and git commit on startup for easier debugging and support. (#8072, @prasad89)
- Updated
certificate
metrics to the collector approach. (#7856, @hjoshi123)
Bug or Regression
- ACME: Increased challenge authorization timeout to 2 minutes to fix
error waiting for authorization
(#7796, @hjoshi123) - BUGFIX: permitted URI domains were incorrectly used to set the excluded URI domains in the CSR's name constraints (#7816, @kinolaev)
- Enforced ACME HTTP-01 solver validation to properly reject configurations when multiple ingress options (
class
,ingressClassName
,name
) are specified simultaneously (#8021, @lunarwhite) - Increase maximum sizes of PEM certificates and chains which can be parsed in cert-manager, to handle leaf certificates with large numbers of DNS names or other identities (#7961, @SgtCoDFish)
- Reverted adding the
global.rbac.disableHTTPChallengesRole
Helm option. (#7836, @inteon) - This change removes the
path
label of core ACME client metrics and will require users to update their monitoring dashboards and alerting rules if using those metrics. (#8109, @mladen-rusev-cyberark) - Use the latest version of
ingress-nginx
in E2E tests to ensure compatibility (#7792, @wallrj)
Other (Cleanup or Flake)
- Helm: Fix naming template of
tokenrequest
RoleBinding resource to improve consistency (#7761, @lunarwhite) - Improve error messages when certificates, CRLs or private keys fail admission due to malformed or missing PEM data (#7928, @SgtCoDFish)
- Major upgrade of Akamai SDK. NOTE: The new version has not been fully tested end-to-end due to the lack of cloud infrastructure. (#8003, @hjoshi123)
- Update kind images to include the Kubernetes 1.33 node image (#7786, @wallrj)
- Use
maps.Copy
for cleaner map handling (#8092, @quantpoet) - Vault: Migrate Vault E2E add-on tests from deprecated
vault-client-go
to the newvault/api
client. (#8059, @armagankaratosun)
v1.19.0-alpha.0
cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.
⚠️ This is a pre-release. For testing only!
Changes since v1.18.0
:
Feature
- Add IPv6 rules to the default network policy (
#7726
,@jcpunk
) - Add
global.nodeSelector
to helm chart to allow for a singlenodeSelector
to be set across all services. (#7818
,@StingRayZA
) - Add generated
applyconfigurations
allowing clients to make type safe server-side apply requests for cert-manager resources. (#7866
,@erikgb
) - Added API defaults to issuer references group (cert-manager.io) and kind (Issuer). (
#7414
,@erikgb
) - Added
certmanager_certificate_challenge_status
Prometheus metric. (#7736
,@hjoshi123
) - Added
protocol
field forrfc2136
DNS01 provider (#7881
,@hjoshi123
) CAInjectorMerging
has been promoted to BETA and is now enabled by default (#8017
,@ThatsMrTalbot
)- Feature: Add support for
ACME profiles extension
. (#7777
,@wallrj
) - Support configurable resource requests and limits for ACME HTTP01 solver pods through ClusterIssuer and Issuer specifications, allowing granular resource management that overrides global
--acme-http01-solver-resource-*
settings. (#7972
,@lunarwhite
) - The controller, webhook and ca-injector now logs its version and git commit on startup for easier debugging and support. (
#8072
,@prasad89
) - Updated
certificate
metrics to the collector approach. (#7856
,@hjoshi123
)
Bug or Regression
- ACME: Increased challenge authorization timeout to 2 minutes to fix
error waiting for authorization
(#7796
,@hjoshi123
) - BUGFIX: permitted URI domains were incorrectly used to set the excluded URI domains in the CSR's name constraints (
#7816
,@kinolaev
) - Enforced ACME HTTP-01 solver validation to properly reject configurations when multiple ingress options (
class
,ingressClassName
,name
) are specified simultaneously (#8021
,@lunarwhite
) - Increase maximum sizes of PEM certificates and chains which can be parsed in cert-manager, to handle leaf certificates with large numbers of DNS names or other identities (
#7961
,@SgtCoDFish
) - Reverted adding the
global.rbac.disableHTTPChallengesRole
Helm option. (#7836
,@inteon
) - Use the latest version of ingress-nginx in E2E tests to ensure compatibility (
#7792
,@wallrj
)
Other (Cleanup or Flake)
- Helm: Fix naming template of
tokenrequest
RoleBinding resource to improve consistency (#7761
,@lunarwhite
) - Improve error messages when certificates, CRLs or private keys fail admission due to malformed or missing PEM data (
#7928
,@SgtCoDFish
) - Major upgrade of Akamai SDK. NOTE: The new version has not been fully tested end-to-end due to the lack of cloud infrastructure. (
#8003
,@hjoshi123
) - Update kind images to include the Kubernetes 1.33 node image (
#7786
,@wallrj
) - Use
maps.Copy
for cleaner map handling (#8092
,@quantpoet
)
v1.18.2
cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.
We fixed a bug in the CSR's name constraints construction (only applies if you have enabled the NameConstraints
feature gate).
We dropped the new global.rbac.disableHTTPChallengesRole
Helm option due to a bug we found, this feature will be released in v1.19
instead.
Changes since v1.18.1
:
Bug or Regression
- BUGFIX: permitted URI domains were incorrectly used to set the excluded URI domains in the CSR's name constraints (#7833, @cert-manager-bot)
- Reverted adding the
global.rbac.disableHTTPChallengesRole
Helm option. (#7837, @cert-manager-bot)
v1.17.4
cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.
We fixed a bug in the CSR's name constraints construction (only applies if you have enabled the NameConstraints
feature gate).
Changes since v1.17.3
:
Bug or Regression
- BUGFIX: permitted URI domains were incorrectly used to set the excluded URI domains in the CSR's name constraints (#7832, @cert-manager-bot)
v1.18.1
cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.
We have added a new feature gate ACMEHTTP01IngressPathTypeExact
, to allow ingress-nginx
users to turn off the new default Ingress PathType: Exact
behavior, in ACME HTTP01 Ingress challenge solvers.
This change fixes the following issue: #7791
We have increased the ACME challenge authorization timeout to two minutes, which we hope will fix a timeout error (error waiting for authorization
), which has been reported by multiple users, since the release of cert-manager v1.16.0
.
This change should fix the following issues: #7337, #7444, and #7685.
ℹ️ Be sure to review all new features and changes below, and read the full release notes carefully before upgrading.
Changes since v1.18.0
:
Feature
- Added a new feature gate
ACMEHTTP01IngressPathTypeExact
, to allowingress-nginx
users to turn off the new default IngressPathType: Exact
behavior, in ACME HTTP01 Ingress challenge solvers. (#7810
, @sspreitzer)
Bug or Regression
- ACME: Increased challenge authorization timeout to 2 minutes to fix
error waiting for authorization
. (#7801
, @hjoshi123)
Other (Cleanup or Flake)
v1.17.3
cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.
This patch release addresses several vulnerabilities reported by the Trivy security scanner. It is built with the latest version of Go 1.23.
We have increased the ACME challenge authorization timeout to two minutes, which we hope will fix a timeout error (error waiting for authorization
), which has been reported by multiple users, in: #7337, #7444, and #7685.
ℹ️ Be sure to review all new features and changes below, and read the full release notes carefully before upgrading.
Changes since v1.17.2
:
Bug or Regression
- Bump Go to 1.23.10 to fix GO-2025-3749, GO-2025-3750, and GO-2025-3751 (#7799, @wallrj)
- ACME: Increased challenge authorization timeout to 2 minutes to fix error
waiting for authorization
(#7798, @hjoshi123)
Other (Cleanup or Flake)
v1.18.0
cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.
cert-manager 1.18 introduces several new features and breaking changes. Highlights include support for ACME certificate profiles, a new default for Certificate.Spec.PrivateKey.RotationPolicy
now set to Always
(breaking change), and the default Certificate.Spec.RevisionHistoryLimit
now set to 1
(potentially breaking).
ℹ️ Be sure to review all new features and changes below, and read the full release notes carefully before upgrading.
Known Issues
- ACME HTTP01 challenge paths are rejected by the ingress-nginx validating webhook (#7791)
Changes since v1.17.2
:
Feature
- Add config to the Vault issuer to allow the server-name to be specified when validating the certificates the Vault server presents. (#7663, @ThatsMrTalbot)
- Added
app.kubernetes.io/managed-by: cert-manager
label to the created Let's Encrypt account keys (#7577, @terinjokes) - Added certificate issuance and expiration time metrics (
certmanager_certificate_not_before_timestamp_seconds
,certmanager_certificate_not_after_timestamp_seconds
). (#7612, @solidDoWant) - Added ingress-shim option:
--extra-certificate-annotations
, which sets a list of annotation keys to be copied from Ingress-like to resulting Certificate object (#7083, @k0da) - Added the
iss
short name for the cert-managerIssuer
resource. (#7373, @SgtCoDFish) - Added the
ciss
short name for the cert-managerClusterIssuer
resource (#7373, @SgtCoDFish) - Adds the
global.rbac.disableHTTPChallengesRole
helm value to disable HTTP-01 ACME challenges. This allows cert-manager to drop its permission to create pods, improving security when HTTP-01 challenges are not required. (#7666, @ali-hamza-noor) - Allow customizing signature algorithm (#7591, @tareksha)
- Cache the full DNS response and handle TTL expiration in
FindZoneByFqdn
(#7596, @ThatsIvan) - Cert-manager now uses a local fork of the golang.org/x/crypto/acme package (#7752, @wallrj)
- Add support for ACME profiles extension. (#7777, @wallrj)
- Promote the
UseDomainQualifiedFinalizer
feature to GA. (#7735, @jsoref) - Switched service/servicemon definitions to use port names instead of numbers. (#7727, @jcpunk)
- The default value of
Certificate.Spec.PrivateKey.RotationPolicy
changed fromNever
toAlways
. (#7723, @wallrj) - Potentially breaking: Set the default revisionHistoryLimit to 1 for the CertificateRequest revisions (#7758, @ali-hamza-noor)
Documentation
- Fix some comments (#7620, @teslaedison)
Bug or Regression
- Bump
go-jose
dependency to addressCVE-2025-27144
. (#7606, @SgtCoDFish) - Bump
golang.org/x/oauth2
to patchCVE-2025-22868
. (#7638, @NicholasBlaskey) - Bump
golang.org/x/crypto
to patchGHSA-hcg3-q754-cr77
. (#7638, @NicholasBlaskey) - Bump
github.com/golang-jwt/jwt
to patchGHSA-mh63-6h87-95cp
. (#7638, @NicholasBlaskey) - Change of the Kubernetes Ingress pathType from
ImplementationSpecific
toExact
for a reliable handling of ingress controllers and enhanced security. (#7767, @sspreitzer) - Fix AWS Route53 error detection for not-found errors during deletion of DNS records. (#7690, @wallrj)
- Fix behavior when running with
--namespace=<namespace>
: limit the scope of cert-manager to a single namespace and disable cluster-scoped controllers. (#7678, @tsaarni) - Fix handling of certificates with IP addresses in the
commonName
field; IP addresses are no longer added to the DNSsubjectAlternativeName
list and are instead added to theipAddresses
field as expected. (#7081, @johnjcool) - Fix issuing of certificates via DNS01 challenges on Cloudflare after a breaking change to the Cloudflare API (#7549, @LukeCarrier)
- Fixed the
certmanager_certificate_renewal_timestamp_seconds
metric help text indicating that the metric is relative to expiration time, rather than Unix epoch time. (#7609, @solidDoWant) - Fixing the service account template to incorporate boolean values for the annotations. (#7698, @ali-hamza-noor)
- Quote nodeSelector values in Helm Chart (#7579, @tobiasbp)
- Skip Gateway TLS listeners in
Passthrough
mode. (#6986, @vehagn) - Upgrade
golang.org/x/net
fixingCVE-2025-22870
. (#7619, @dependabot[bot])
Other (Cleanup or Flake)
- ACME E2E Tests: Upgraded Pebble to v2.7.0 and modified the ACME tests to match latest Pebble behaviour. (#7771, @wallrj)
- Patch the
third_party/forked/acme
package with support for the ACME profiles extension. (#7776, @wallrj) - Promote the
AdditionalCertificateOutputFormats
feature to GA, making additional formats always enabled. (#7744, @erikgb) - Remove deprecated feature gate
ValidateCAA
. Setting this feature gate is now a no-op which does nothing but print a warning log line (#7553, @SgtCoDFish) - Update kind images to include the Kubernetes 1.33 node image (#7787, @cert-manager-bot)
- Upgrade Go to
v1.24.4
(#7785, @wallrj) - Use slices.Contains to simplify code (#7753, @cuinix)
v1.18.0-beta.0
cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.
⚠️ This is a pre-release. Please help the project by testing this release!📖 Draft release notes: https://release-next--cert-manager.netlify.app/docs/releases/release-notes/release-notes-1.18/
Changes since v1.17.0
:
Feature
- Add config to the Vault issuer to allow the server-name to be specified when validating the certificates the Vault server presents. (
#7663
,@ThatsMrTalbot
) - Added
app.kubernetes.io/managed-by: cert-manager
label to the created Let's Encrypt account keys (#7577
,@terinjokes
) - Added certificate issuance and expiration time metrics (
certmanager_certificate_not_before_timestamp_seconds
,certmanager_certificate_not_after_timestamp_seconds
). (#7612
,@solidDoWant
) - Added ingress-shim option
--extra-certificate-annotations
, which sets a list of annotation keys to be copied from Ingress-like to resulting Certificate object (#7083
,@k0da
) - Added the
iss
short name for the cert-managerIssuer
resource - Added the
ciss
short name for the cert-managerClusterIssuer
resource (#7373
,@SgtCoDFish
) - Adds the
global.rbac.disableHTTPChallengesRole
helm value to disable HTTP-01 ACME challenges. This allows cert-manager to drop its permission to create pods, improving security when HTTP-01 challenges are not required. (#7666
,@ali-hamza-noor
) - Allow customizing signature algorithm (
#7591
,@tareksha
) - Cache the full DNS response and handle TTL expiration in
FindZoneByFqdn
(#7596
,@ThatsIvan
) - Cert-manager now uses a local fork of the
golang.org/x/crypto/acme
package (#7752
,@wallrj
) - Add support for
ACME profiles extension
. (#7777
,@wallrj
) - Promote the
UseDomainQualifiedFinalizer
feature to GA. (#7735
,@jsoref
) - Switched
service/servicemon
definitions to use port names instead of numbers. (#7727
,@jcpunk
) - The default value of
Certificate.Spec.PrivateKey.RotationPolicy
changed fromNever
toAlways
. (#7723
,@wallrj
) - Set the default
revisionHistoryLimit
to 1 for the CertificateRequest revisions (#7758
,@ali-hamza-noor
)
Documentation
- Fix some comments (
#7620
,@teslaedison
)
Bug or Regression
- Bump
go-jose
dependency to addressCVE-2025-27144
. (#7606
,@SgtCoDFish
) - Bump
golang.org/x/oauth2
to patchCVE-2025-22868
. - Bump
golang.org/x/crypto
to patchGHSA-hcg3-q754-cr77
. - Bump
github.com/golang-jwt/jwt
to patchGHSA-mh63-6h87-95cp
. (#7638
,@NicholasBlaskey
) - Change of the Kubernetes Ingress
pathType
fromImplementationSpecific
toExact
for a reliable handling of ingress controllers and enhanced security. (#7767
,@sspreitzer
) - Fix AWS Route53 error detection for not-found errors during deletion of DNS records. (
#7690
,@wallrj
) - Fix behavior when running with
--namespace=<namespace>
: limit the scope of cert-manager to a single namespace and disable cluster-scoped controllers. (#7678
,@tsaarni
) - Fix handling of certificates with IP addresses in the
commonName
field; IP addresses are no longer added to the DNSsubjectAlternativeName
list and are instead added to theipAddresses
field as expected. (#7081
,@johnjcool
) - Fix issuing of certificates via DNS01 challenges on Cloudflare after a breaking change to the Cloudflare API (
#7549
,@LukeCarrier
) - Fixed the
certmanager_certificate_renewal_timestamp_seconds
metric help text indicating that the metric is relative to expiration time, rather than Unix epoch time. (#7609
,@solidDoWant
) - Fixing the service account template to incorporate boolean values for the annotations. (
#7698
,@ali-hamza-noor
) - Quote nodeSelector values in Helm Chart (
#7579
,@tobiasbp
) - Skip Gateway TLS listeners in
Passthrough
mode. (#6986
,@vehagn
) - Upgrade
golang.org/x/net
fixingCVE-2025-22870
. (#7619
,@depandabot[bot]
)
Other (Cleanup or Flake)
- ACME E2E Tests: Upgraded Pebble to
v2.7.0
and modified the ACME tests to match latest Pebble behavior. (#7771
,@wallrj
) - Patch the
third_party/forked/acme
package with support for the ACME profiles extension. (#7776
,@wallrj
) - Promote the
AdditionalCertificateOutputFormats
feature to GA, making additional formats always enabled. (#7744
,@erikgb
) - Remove deprecated feature gate
ValidateCAA
. Setting this feature gate is now a no-op which does nothing but print a warning log line (#7553
,@SgtCoDFish
) - Upgrade
golang.org/x/net
fixingCVE-2025-22870
. (#7619
,@depandabot[bot]
) - Use
slices.Contains
to simplify code (#7753
,@cuinix
)