---
title: Release 1.16
description: 'cert-manager release notes: cert-manager 1.16'
---

The cert-manager 1.16 release includes: new Helm chart features, more Prometheus
metrics, memory optimizations, and various improvements and bug fixes for the
ACME issuer and Venafi Issuer.

## Breaking changes

1. Helm schema validation may reject your existing Helm values files if they contain typos or unrecognized fields.
   For more details, refer to the [Helm](#helm) section below.
1. Venafi Issuer may fail to renew certificates if the requested duration conflicts with the CA’s minimum or maximum policy settings in Venafi.
   For more details, refer to the [Venafi Issuer](#venafi-issuer) section below.
1. Venafi Issuer may fail to renew Certificates if the issuer has been configured for TPP with username-password authentication.
   For more details, refer to the [Venafi Issuer](#venafi-issuer) section below.

### OperatorHub Packages Discontinued

We no longer publish OperatorHub packages for cert-manager.
Why? Because the cert-manager maintainers no longer have the time or resources to maintain and test those packages.
cert-manager `v1.16.5` is the last release on OperatorHub.

> ℹ️ [cert-manager `v1.16.5` for RedHat OpenShift OperatorHub](https://github.com/redhat-openshift-ecosystem/community-operators-prod/tree/main/operators/cert-manager/1.16.5).
>
> ℹ️ [cert-manager `v1.16.5` for `operatorhub.io`](https://github.com/k8s-operatorhub/community-operators/tree/main/operators/cert-manager/1.16.5).
>
> ℹ️ [Archived `cert-manager-olm` repository](https://github.com/cert-manager/cert-manager-olm).

## Themes

### Helm

The Helm chart now includes a JSON schema which will validate the values that you supply when installing the chart.
This will help you to get your Helm values right first time.
It will alert you to typos and unrecognized fields in your existing Helm values files.
And it will make it easier for the cert-manager maintainers to maintain the Helm chart,
avoiding typos and mistakes in the default values file.

> ⚠️ Helm schema validation may reject your existing Helm values files if they contain typos or unrecognized fields.
> You can use `helm template` to test your Helm values before you upgrade:
> ```bash
> helm template cert-manager \
>   --repo https://charts.jetstack.io \
>   --version v1.16.x \
>   --values values.cert-manager.yaml
> ```
> Here's an example of an error that would be caught by the schema validation:
> ```yaml
> # values.cert-manager.yaml
> global:
>   logLevel: debug # ❗ Should be an integer.
> ```
> ```console
> Error: values don't meet the specifications of the schema(s) in the following chart(s):
> cert-manager:
>  - global.logLevel: Invalid type. Expected: number, given: string
> ```
>
> ℹ️ The schema files are generated by [helm-tool](https://github.com/cert-manager/helm-tool), a utility which generates Helm docs, schema files and performs linting.
>
> 📖 Read [Helm: Charts: Schema Files](https://helm.sh/docs/topics/charts/#schema-files) to learn more.

### Extended Metrics

The webhook and cainjector components now have metrics servers,
so that platform teams can monitor the performance of all the cert-manager components
and gain more information about the underlying Go runtime in the event of a problem.
Read the [Prometheus Metrics](../../devops-tips/prometheus-metrics.md) page to learn more.

### Venafi Issuer

We've made some important improvements to the Venafi Issuer.

If you use the Venafi Issuer with a TPP server with  username-password authentication,
cert-manager 1.16 now uses OAuth authentication instead of the deprecated API Key authentication.
This is a potentially breaking change, because you may need to reconfigure your TPP server to enable OAuth authentication,
and you may need to reconfigure the cert-manager service accounts in TPP to work with OAuth.

The desired `certificate.spec.duration` value will now be sent to the Venafi API server.
The default value for `certificate.spec.duration` is 90 days, but you may have changed this in your Certificate resources.
Your Venafi issuing template may be configured to ignore the requested `From` and `To` times,
in which case nothing will change.
Your Venafi issuing template may be configured with a maximum or a minimum duration,
in which case your certificate requests may fail after you upgrade to cert-manager 1.16.
Consider this carefully when upgrading to cert-manager 1.16.

When connecting to Venafi TPP, cert-manager can now load the CA certificate from a Secret resource.
This allows you to manage the CA with familiar tools such as trust-manager.

Read the [Venafi Issuer](../../configuration/venafi.md#creating-a-venafi-trust-protection-platform-issuer) page to learn more.

### Route53 DNS01 Solver Cleanup

The Route53 DNS01 solver code had become over-complicated due to its age and due
to the variety of authentication methods that have been added over the years.
When we upgraded to `AWS SDK for Go V2`in the last release, we did not have a
good understanding of the new SDK and we were not able to test it thoroughly
with all authentication methods. In this release we started putting that right.

In this release we have tidied up the code and added more logging so that it is
easier to debug problems in the field.
We have improved the documentation of the Route53 API fields, particularly the region field,
where we have tried to describe where and how cert-manager uses that value.

We have relaxed the API validation so that the `region` field is now optional.
cert-manager will now fall back to using the `AWS_REGION` environment variable of the controller Pod,
regardless of which authentication mechanism is used.

Users who use IAM Roles for Service accounts or Pod Identity need
not specify the region, but if your Issuer or ClusterIssuer does include a region (for the sake of satisfying the old API validation),
that issuer region will be ignored, if the `AWS_REGION` environment variable is set.

cert-manager will now use regional STS endpoints, when using `AssumeRole` or when
using a dedicated (non-mounted) Kubernetes ServiceAccount.
The regional endpoint will be computed based on the Issuer `region` field,
or the `AWS_REGION` environment variable.

> ℹ️ This change only affects the `AssumeRole` configuration, which is used for cross-account authentication,
> and the `AssumeRoleWithWebIdentity` configuration, where the user supplies the name of a Kubernetes ServiceAccount.
> It does not affect you if you have configured the cert-manager ServiceAccount for [IRSA](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html),
> where the ServiceAccount token is mounted in to the cert-manager controller Pod.
> Regional STS endpoints were already being used in that case.
>
> ℹ️ There are good reasons to use regional STS endpoints, summarized as follows on the [Amazon AWS blog](https://aws.amazon.com/blogs/security/how-to-use-regional-aws-sts-endpoints/):
>
> > Although the global (legacy) AWS STS endpoint https://sts.amazonaws.com is highly available, it’s hosted in a single AWS Region — US East (N. Virginia) — and like other endpoints, it doesn’t provide automatic fail-over to endpoints in other Regions.
>
> 📖 Read [Manage AWS STS in an AWS Region](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)
to learn about which regions support STS.
>
> 📖 Read [AWS STS Regional endpoints](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sts-regionalized-endpoints.html),
to learn how to configure the use of regional STS endpoints using environment variables.

Read the [ACME Issuer Route53](../../configuration/acme/dns01/route53.md) page to learn more.

### Memory Optimizations

We have continued our effort to reduce the memory footprint of cert-manager.

The cainjector no longer caches Secret data; instead it only caches the metadata of Secret resources.
This significantly reduces its memory usage.
It also reduces the load on the Kubernetes API server, when cainjector starts up,
because it no longer needs to send all the data of all the Secret resources over the network.

cert-manager now uses client-go `v0.31.0` which [supports a new `WatchListClient` feature](https://relnotes.k8s.io/?markdown=WatchListClient).
This enables cert-manager to make use of the [Streaming Lists feature of the Kubernetes API server](https://kubernetes.io/docs/reference/using-api/api-concepts/#streaming-lists).
This reduces the load on the Kubernetes API server,
because cert-manager components will no longer request complete unpaged lists of all API resources when they start up.
And it reduces the peak memory use of the cert-manager components when they startup,
because they no longer have to hold a duplicate unpaged list of resources in-memory
while they add them to the client side cache.
To use this feature, you first need to enable the `WatchList` feature in the Kubernetes API server,
which is available since Kubernetes 1.27.
Second, you need to enable the client-go `WatchListClient` feature in the cert-manager components.
If you installed cert-manager using Helm, you can use the following Helm values:

```
# values.cert-manager.yaml
extraEnv:
  - name: KUBE_FEATURE_WatchListClient
    value: "true"
cainjector:
  extraEnv:
    - name: KUBE_FEATURE_WatchListClient
      value: "true"
webhook:
  extraEnv:
    - name: KUBE_FEATURE_WatchListClient
      value: "true"
```


You will see log messages reporting the state of the client-go feature gates, when cert-manager starts up.
And if you increase the logging verbosity, you will see `sendInitialEvents=true` and `resourceVersionMatch=NotOlderThan` among the requests.
For example:

```console
Feature gate updated state [caller=features/envvar.go:169 enabled=true feature=WatchListClient]
GET https://10.96.0.1:443/api/v1/secrets?allowWatchBookmarks=true&labelSelector=%21controller.cert-manager.io%2Ffao&resourceVersionMatch=NotOlderThan&sendInitialEvents=true&timeout=6m49s&timeoutSeconds=409&watch=true 200 OK in 2 milliseconds [caller=transport/round_trippers.go:553]
```

Read [Kubernetes API Concepts: Streaming Lists](https://kubernetes.io/docs/reference/using-api/api-concepts/#streaming-lists),
to learn more.
Read [Introducing Feature Gates to Client-Go: Enhancing Flexibility and Control](https://kubernetes.io/blog/2024/08/12/feature-gates-in-client-go),
to learn about enabling and disabling client-go features.

### Logging

We have improved the signal-to-noise ratio in the logs.

The controller has a new feature gate: `UseDomainQualifiedFinalizer`.
This changes the finalizer added to ACME Challenge resources,
from `finalizer.acme.cert-manager.io` to `acme.cert-manager.io/finalizer`.
The new finalizer name is [compliant with Kubernetes standards](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#finalizers),
and will resolve warnings in cert-manager-controller pods of the form:
> `W0910 20:07:22.491920 1 warnings.go:70] metadata.finalizers: "finalizer.acme.cert-manager.io": prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writers`

Read [cert-manager component configuration: Feature gates](../../installation/configuring-components.md#feature-gates) to learn more.

cert-manager now uses client-go `v0.31.0`, which removes a lot of noisy errors from logs, of the form:
> `reflector.go: unable to sync list result: internal error: cannot cast object DeletedFinalStateUnknown`

Read [cert-manager issue 6753](https://github.com/cert-manager/cert-manager/issues/6753) to learn more.

## Community

Thanks to all our open-source contributors with commits in this release, including:

[`@Guitarkalle`](https://github.com/Guitarkalle),
[`@Jasper-Ben`](https://github.com/Jasper-Ben),
[`@aidy`](https://github.com/aidy),
[`@bdols`](https://github.com/bdols),
[`@cbroglie`](https://github.com/cbroglie),
[`@eplightning`](https://github.com/eplightning),
[`@hawksight`](https://github.com/hawksight),
[`@joshmue`](https://github.com/joshmue),
[`@jrcichra`](https://github.com/jrcichra),
[`@jsoref`](https://github.com/jsoref),
[`@miguelvr`](https://github.com/miguelvr),
[`@mindw`](https://github.com/mindw),
[`@sankalp-at-gh`](https://github.com/sankalp-at-gh).

Thanks also to the following cert-manager maintainers for their contributions during this release:

[`@SgtCoDFish`](https://github.com/SgtCoDFish),
[`@ThatsMrTalbot`](https://github.com/ThatsMrTalbot),
[`@inteon`](https://github.com/inteon),
[`@wallrj`](https://github.com/wallrj).

Equally thanks to everyone who provided feedback, helped users and raised issues on GitHub and Slack and joined our meetings!

Thanks also to the CNCF, which provides resources and support, and to the AWS open source team for being good community members and for their maintenance of the PrivateCA Issuer.

In addition, massive thanks to Venafi for contributing developer time and resources towards the continued maintenance of cert-manager projects.

## `v1.16.5`

This patch release addresses several vulnerabilities reported by the Trivy security scanner. It is built with the latest version of Go 1.23 and includes various dependency updates. Changes since `v1.16.4`:

### Bug or Regression

- Bump Go to `v1.23.8` to fix `CVE-2025-22871` ([#7706](https://github.com/cert-manager/cert-manager/pull/7706), [`@wallrj`](https://github.com/wallrj))
- Bump `github.com/golang-jwt/jwt/v5` to `v5.2.2` to fix `CVE-2025-30204` ([#7708](https://github.com/cert-manager/cert-manager/pull/7708), [`@wallrj`](https://github.com/wallrj))
- Bump `golang.org/x/net` to fix `CVE-2025-22872` ([#7707](https://github.com/cert-manager/cert-manager/pull/7707), [`@wallrj`](https://github.com/wallrj))
- Bump `go-jose` dependency to address `CVE-2025-27144` ([#7602](https://github.com/cert-manager/cert-manager/pull/7602), [`@SgtCoDFish`](https://github.com/SgtCoDFish))
- Bump `golang.org/x/net` to address `CVE-2025-22870` reported by Trivy ([#7623](https://github.com/cert-manager/cert-manager/pull/7623), [`@SgtCoDFish`](https://github.com/SgtCoDFish))

## `v1.16.4`

This patch release is primarily intended to address a [breaking change](https://github.com/cert-manager/cert-manager/issues/7540) in Cloudflare's API which impacted ACME DNS-01 challenges using Cloudflare.

### Bug or Regression

- Fix issuing of certificates via DNS01 challenges on Cloudflare after a breaking change to the Cloudflare API ([#7566](https://github.com/cert-manager/cert-manager/pull/7566), [@LukeCarrier](https://github.com/LukeCarrier))
- Bump go to 1.23.6 to address [`CVE-2025-22866`](https://github.com/advisories/GHSA-3whm-j4xm-rv8x) reported by Trivy ([#7562](https://github.com/cert-manager/cert-manager/pull/7562), [@SgtCoDFish](https://github.com/SgtCoDFish))
- Update go to 1.23.5 ([#7533](https://github.com/cert-manager/cert-manager/pull/7533), [@tareksha](https://github.com/tareksha))

## `v1.16.3`

cert-manager `v1.16.3` is a patch release mainly focused around bumping dependencies to address reported CVEs: `CVE-2024-45337` and `CVE-2024-45338`.

We don't believe that cert-manager is actually vulnerable; this release is instead intended to satisfy vulnerability scanners.

It also includes a bug fix to the new `renewBeforePercentage` field. If you were using `renewBeforePercentage`, see [PR #7421](https://github.com/cert-manager/cert-manager/pull/7421) for more information.

### Bug Fixes

- Bump `golang.org/x/net` and `golang.org/x/crypto` to address `CVE-2024-45337` and `CVE-2024-45338` ([#7485](https://github.com/cert-manager/cert-manager/pull/7485), [@erikgb](https://github.com/erikgb))
- Fix the behavior of `renewBeforePercentage` to comply with its spec ([#7441](https://github.com/cert-manager/cert-manager/pull/7441), [@cert-manager-bot](https://github.com/cert-manager-bot))

### Other

- Bump go to 1.23.4 ([#7489](https://github.com/cert-manager/cert-manager/pull/7489), [@erikgb](https://github.com/erikgb))
- Bump base images to latest available ([#7508](https://github.com/cert-manager/cert-manager/pull/7508), [@SgtCoDFish](https://github.com/SgtCoDFish))

## `v1.16.2`

This patch release makes [several changes](https://github.com/cert-manager/cert-manager/pull/7401) to how PEM input is validated in
cert-manager, adding maximum sizes appropriate to the type of PEM data which is being parsed.

This is to prevent an unacceptable slow-down in parsing specially crafted PEM data. The issue was found by Google's OSS-Fuzz project.

The issue is low severity; to exploit the PEM issue would require privileged access which would likely allow Denial-of-Service through other methods.

Note also that since most PEM data parsed by cert-manager comes from `ConfigMap` or `Secret` resources which have
a max size limit of approximately 1MB, it's difficult to force cert-manager to parse large amounts of PEM data.

Further details are in the [security advisory](https://github.com/cert-manager/cert-manager/security/advisories/GHSA-r4pg-vg54-wxx4).

In addition, the version of Go used to build cert-manager 1.16 was updated along with the base images.

### Bug Fixes

- Set a maximum size for PEM inputs which cert-manager will accept to remove possibility of taking a long time to process an input ([#7401](https://github.com/cert-manager/cert-manager/pull/7401), @SgtCoDFish)

### Other (Cleanup or Flake)

- Bump go to 1.23.3 and bump base images to latest available ([#7431](https://github.com/cert-manager/cert-manager/pull/7431), @SgtCoDFish)

## `v1.16.1`

cert-manager `v1.16.1` contains some fixes to Helm value schema validation, as well as a fix to the ACME ClusterIssuer.

Changes since `v1.16.0`.

### Bug Fixes

- BUGFIX: Helm schema validation: the new schema validation was too strict for the "global" section. Since the global section is shared across all charts and sub-charts, we must also allow unknown fields. ([#7348](https://github.com/cert-manager/cert-manager/pull/7348), [`@inteon`](https://github.com/inteon))
- BUGFIX: Helm will now accept percentages for the `podDisruptionBudget.minAvailable` and `podDisruptionBudget.maxAvailable` values. ([#7345](https://github.com/cert-manager/cert-manager/pull/7345), [`@inteon`](https://github.com/inteon))
- Helm: allow `enabled` to be set as a value to toggle cert-manager as a dependency. ([#7356](https://github.com/cert-manager/cert-manager/pull/7356), [`@inteon`](https://github.com/inteon))
- BUGFIX: A change in `v1.16.0` caused cert-manager's ACME ClusterIssuer to look in the wrong namespace for resources required for the issuance (e.g. credential Secrets). This is now fixed in `v1.16.1`. ([#7342](https://github.com/cert-manager/cert-manager/pull/7342), [`@inteon`](https://github.com/inteon))

## `v1.16.0`

Changes since `v1.15.0`.

### Feature

- Add `SecretRef` support for Venafi TPP issuer CA Bundle ([#7036](https://github.com/cert-manager/cert-manager/pull/7036), [`@sankalp-at-gh`](https://github.com/sankalp-at-gh))
- Add `renewBeforePercentage` alternative to `renewBefore` ([#6987](https://github.com/cert-manager/cert-manager/pull/6987), [`@cbroglie`](https://github.com/cbroglie))
- Add a metrics server to the cainjector ([#7194](https://github.com/cert-manager/cert-manager/pull/7194), [`@wallrj`](https://github.com/wallrj))
- Add a metrics server to the webhook ([#7182](https://github.com/cert-manager/cert-manager/pull/7182), [`@wallrj`](https://github.com/wallrj))
- Add client certificate auth method for Vault issuer ([#4330](https://github.com/cert-manager/cert-manager/pull/4330), [`@joshmue`](https://github.com/joshmue))
- Add process and go runtime metrics for controller ([#6966](https://github.com/cert-manager/cert-manager/pull/6966), [`@mindw`](https://github.com/mindw))
- Added `app.kubernetes.io/managed-by: cert-manager` label to the cert-manager-webhook-ca Secret ([#7154](https://github.com/cert-manager/cert-manager/pull/7154), [`@jrcichra`](https://github.com/jrcichra))
- Allow the user to specify a Pod template when using GatewayAPI HTTP01 solver, this mirrors the behavior when using the Ingress HTTP01 solver. ([#7211](https://github.com/cert-manager/cert-manager/pull/7211), [`@ThatsMrTalbot`](https://github.com/ThatsMrTalbot))
- Create token request RBAC for the cert-manager ServiceAccount by default ([#7213](https://github.com/cert-manager/cert-manager/pull/7213), [`@Jasper-Ben`](https://github.com/Jasper-Ben))
- Feature: Append cert-manager user-agent string to all AWS API requests, including IMDS and STS requests. ([#7295](https://github.com/cert-manager/cert-manager/pull/7295), [`@wallrj`](https://github.com/wallrj))
- Feature: Log AWS SDK warnings and API requests at cert-manager debug level to help debug AWS Route53 problems in the field. ([#7292](https://github.com/cert-manager/cert-manager/pull/7292), [`@wallrj`](https://github.com/wallrj))
- Feature: The Route53 DNS solver of the ACME Issuer will now use regional STS endpoints computed from the region that is supplied in the Issuer spec or in the `AWS_REGION` environment variable.
  Feature: The Route53 DNS solver of the ACME Issuer now uses the "ambient" region (`AWS_REGION` or `AWS_DEFAULT_REGION`) if `issuer.spec.acme.solvers.dns01.route53.region` is empty; regardless of the flags `--issuer-ambient-credentials` and `--cluster-issuer-ambient-credentials`. ([#7299](https://github.com/cert-manager/cert-manager/pull/7299), [`@wallrj`](https://github.com/wallrj))
- Helm: adds JSON schema validation for the Helm values. ([#7069](https://github.com/cert-manager/cert-manager/pull/7069), [`@inteon`](https://github.com/inteon))
- If the `--controllers` flag only specifies disabled controllers, the default controllers are now enabled implicitly.
  Added `disableAutoApproval` and `approveSignerNames` Helm chart options. ([#7049](https://github.com/cert-manager/cert-manager/pull/7049), [`@inteon`](https://github.com/inteon))
- Make it easier to configure cert-manager using Helm by defaulting `config.apiVersion` and `config.kind` within the Helm chart. ([#7126](https://github.com/cert-manager/cert-manager/pull/7126), [`@ThatsMrTalbot`](https://github.com/ThatsMrTalbot))
- Now passes down specified duration to Venafi client instead of using the CA default only. ([#7104](https://github.com/cert-manager/cert-manager/pull/7104), [`@Guitarkalle`](https://github.com/Guitarkalle))
- Reduce the memory usage of `cainjector`, by only caching the metadata of Secret resources.
  Reduce the load on the K8S API server when `cainjector` starts up, by only listing the metadata of Secret resources. ([#7161](https://github.com/cert-manager/cert-manager/pull/7161), [`@wallrj`](https://github.com/wallrj))
- The Route53 DNS01 solver of the ACME Issuer can now detect the AWS region from the `AWS_REGION` and `AWS_DEFAULT_REGION` environment variables, which is set by the IAM for Service Accounts (IRSA) webhook and by the Pod Identity webhook.
  The `issuer.spec.acme.solvers.dns01.route53.region` field is now optional.
  The API documentation of the `region` field has been updated to explain when and how the region value is used. ([#7287](https://github.com/cert-manager/cert-manager/pull/7287), [`@wallrj`](https://github.com/wallrj))
- Venafi TPP issuer can now be used with a username & password combination with OAuth. Fixes #4653.
  Breaking: cert-manager will no longer use the API Key authentication method which was deprecated in 20.2 and since removed in 24.1 of TPP. ([#7084](https://github.com/cert-manager/cert-manager/pull/7084), [`@hawksight`](https://github.com/hawksight))
- You can now configure the pod security context of HTTP-01 solver pods. ([#5373](https://github.com/cert-manager/cert-manager/pull/5373), [`@aidy`](https://github.com/aidy))
- Helm: New value `webhook.extraEnv`, allows you to set custom environment variables in the webhook Pod.
  Helm: New value `cainjector.extraEnv`, allows you to set custom environment variables in the cainjector Pod.
  Helm: New value `startupapicheck.extraEnv`, allows you to set custom environment variables in the startupapicheck Pod. ([#7319](https://github.com/cert-manager/cert-manager/pull/7319), [`@wallrj`](https://github.com/wallrj))

### Bug or Regression

- Adds support (behind a flag) to use a domain qualified finalizer. If the feature is enabled (which is not by default), it should prevent Kubernetes from reporting: `metadata.finalizers: "finalizer.acme.cert-manager.io": prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writers` ([#7273](https://github.com/cert-manager/cert-manager/pull/7273), [`@jsoref`](https://github.com/jsoref))
- BUGFIX Route53: explicitly set the `aws-global` STS region which is now required by the `github.com/aws/aws-sdk-go-v2` library. ([#7108](https://github.com/cert-manager/cert-manager/pull/7108), [`@inteon`](https://github.com/inteon))
- BUGFIX: fix issue that caused Vault issuer to not retry signing when an error was encountered. ([#7105](https://github.com/cert-manager/cert-manager/pull/7105), [`@inteon`](https://github.com/inteon))
- BUGFIX: the dynamic certificate source used by the webhook TLS server failed to detect a root CA approaching expiration, due to a calculation error. This will cause the webhook TLS server to fail renewing its CA certificate. Please upgrade before the expiration of this CA certificate is reached. ([#7230](https://github.com/cert-manager/cert-manager/pull/7230), [`@inteon`](https://github.com/inteon))
- Bugfix: Prevent aggressive Route53 retries caused by IRSA authentication failures by removing the Amazon Request ID from errors wrapped by the default credential cache. ([#7291](https://github.com/cert-manager/cert-manager/pull/7291), [`@wallrj`](https://github.com/wallrj))
- Bugfix: Prevent aggressive Route53 retries caused by STS authentication failures by removing the Amazon Request ID from STS errors. ([#7259](https://github.com/cert-manager/cert-manager/pull/7259), [`@wallrj`](https://github.com/wallrj))
- Bump `grpc-go` to fix `GHSA-xr7q-jx4m-x55m` ([#7164](https://github.com/cert-manager/cert-manager/pull/7164), [`@SgtCoDFish`](https://github.com/SgtCoDFish))
- Bump the `go-retryablehttp` dependency to fix `CVE-2024-6104` ([#7125](https://github.com/cert-manager/cert-manager/pull/7125), [`@SgtCoDFish`](https://github.com/SgtCoDFish))
- Fix Azure DNS causing panics whenever authentication error happens ([#7177](https://github.com/cert-manager/cert-manager/pull/7177), [`@eplightning`](https://github.com/eplightning))
- Fix incorrect indentation of `endpointAdditionalProperties` in the `PodMonitor` template of the Helm chart ([#7190](https://github.com/cert-manager/cert-manager/pull/7190), [`@wallrj`](https://github.com/wallrj))
- Fixes ACME HTTP01 challenge behavior when using Gateway API to prevent unbounded creation of HTTPRoute resources ([#7178](https://github.com/cert-manager/cert-manager/pull/7178), [`@miguelvr`](https://github.com/miguelvr))
- Handle errors arising from challenges missing from the ACME server ([#7202](https://github.com/cert-manager/cert-manager/pull/7202), [`@bdols`](https://github.com/bdols))
- Helm BUGFIX: the cainjector ConfigMap was not mounted in the cainjector deployment. ([#7052](https://github.com/cert-manager/cert-manager/pull/7052), [`@inteon`](https://github.com/inteon))
- Improve the startupapicheck: validate that the validating and mutating webhooks are doing their job. ([#7057](https://github.com/cert-manager/cert-manager/pull/7057), [`@inteon`](https://github.com/inteon))
- The `KeyUsages` X.509 extension is no longer added when there are no key usages set (in accordance to RFC 5280 Section 4.2.1.3) ([#7250](https://github.com/cert-manager/cert-manager/pull/7250), [`@inteon`](https://github.com/inteon))
- Update `github.com/Azure/azure-sdk-for-go/sdk/azidentity` to address `CVE-2024-35255` ([#7087](https://github.com/cert-manager/cert-manager/pull/7087), [`@dependabot[bot]`](https://github.com/apps/dependabot))

### Other (Cleanup or Flake)

- Old API versions were removed from the codebase.
  Removed:
  (acme.)cert-manager.io/v1alpha2
  (acme.)cert-manager.io/v1alpha3
  (acme.)cert-manager.io/v1beta1 ([#7278](https://github.com/cert-manager/cert-manager/pull/7278), [`@inteon`](https://github.com/inteon))
- Upgrading to client-go `v0.31.0` removes a lot of noisy `reflector.go: unable to sync list result: internal error: cannot cast object DeletedFinalStateUnknown` errors from logs. ([#7237](https://github.com/cert-manager/cert-manager/pull/7237), [`@inteon`](https://github.com/inteon))
- Bump Go to `v1.23.2` ([#7324](https://github.com/cert-manager/cert-manager/pull/7324), [`@cert-manager-bot`](https://github.com/cert-manager-bot))
