Skip to content

add managed-by label to ACME account key #7577

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

terinjokes
Copy link
Contributor

Pull Request Motivation

I've noticed that the secrets created by the ACME account setup do not specify the label "app.kubernetes.io/managed-by". This allows attributing secrets without a controller owner reference to the system response for them.

This label is already used by cert-manager for the CA secret created for the API webhook.

Kind

/kind feature

Release Note

Added `app.kubernetes.io/managed-by: cert-manager` label to the created Let's Encrypt account keys

I've noticed that the secrets created by the ACME account setup do not
specify the label "app.kubernetes.io/managed-by". This allows
attributing secrets without a controller owner reference to the system
response for them.

This label is already used by cert-manager for the CA secret created for
the API webhook.

Signed-off-by: Terin Stock <terinjokes@gmail.com>
@cert-manager-prow cert-manager-prow bot added kind/feature Categorizes issue or PR as related to a new feature. release-note Denotes a PR that will be considered when it comes time to generate release notes. dco-signoff: yes Indicates that all commits in the pull request have the valid DCO sign-off message. needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Feb 18, 2025
@cert-manager-prow
Copy link
Contributor

Hi @terinjokes. Thanks for your PR.

I'm waiting for a cert-manager member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@cert-manager-prow cert-manager-prow bot added area/acme Indicates a PR directly modifies the ACME Issuer code size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. labels Feb 18, 2025
@ThatsMrTalbot
Copy link
Contributor

👋 Hiya, thanks for contributing to cert-manager

/ok-to-test

@cert-manager-prow cert-manager-prow bot added ok-to-test and removed needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Mar 17, 2025
@ThatsMrTalbot
Copy link
Contributor

This all looks good, happy to approve

/lgtm
/approve

@cert-manager-prow cert-manager-prow bot added the lgtm Indicates that a PR is ready to be merged. label Mar 18, 2025
@cert-manager-prow
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: ThatsMrTalbot

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@cert-manager-prow cert-manager-prow bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Mar 18, 2025
@cert-manager-prow cert-manager-prow bot merged commit 3208b64 into cert-manager:master Mar 18, 2025
6 checks passed
@terinjokes terinjokes deleted the terin/le-account-key branch April 24, 2025 12:23
@wallrj
Copy link
Member

wallrj commented May 14, 2025

📢 A new pre-release is available which contains this fix or feature:

Please test and report back.

chris-sanders pushed a commit to chris-sanders/argocd that referenced this pull request Jun 23, 2025
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [cert-manager](https://cert-manager.io) ([source](https://github.com/cert-manager/cert-manager)) | minor | `v1.14.7` -> `v1.18.1` |

---

### Release Notes

<details>
<summary>cert-manager/cert-manager (cert-manager)</summary>

### [`v1.18.1`](https://github.com/cert-manager/cert-manager/releases/tag/v1.18.1)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.18.0...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: [#&#8203;7791](https://github.com/cert-manager/cert-manager/issues/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: [#&#8203;7337](https://github.com/cert-manager/cert-manager/issues/7337), [#&#8203;7444](https://github.com/cert-manager/cert-manager/issues/7444), and [#&#8203;7685](https://github.com/cert-manager/cert-manager/issues/7685).

> ℹ️ Be sure to review all new features and changes below, and read the [full release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.18) carefully before upgrading.

Changes since `v1.18.0`:

##### Feature

-   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. ([`#7810`](https://github.com/cert-manager/cert-manager/pull/7810), [@&#8203;sspreitzer](https://github.com/sspreitzer))

##### Bug or Regression

-   ACME: Increased challenge authorization timeout to 2 minutes to fix `error waiting for authorization`. ([`#7801`](https://github.com/cert-manager/cert-manager/pull/7801), [@&#8203;hjoshi123](https://github.com/hjoshi123))

##### Other (Cleanup or Flake)

-   Use the latest version of ingress-nginx in E2E tests to ensure compatibility ([`#7807`](https://github.com/cert-manager/cert-manager/pull/7807), [@&#8203;wallrj](https://github.com/wallrj))

### [`v1.18.0`](https://github.com/cert-manager/cert-manager/releases/tag/v1.18.0)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.17.3...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](https://cert-manager.io/docs/releases/release-notes/release-notes-1.18) carefully before upgrading.

##### Known Issues

-   ACME HTTP01 challenge paths are rejected by the ingress-nginx validating webhook ([#&#8203;7791](https://github.com/cert-manager/cert-manager/issues/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. ([#&#8203;7663](https://github.com/cert-manager/cert-manager/issues/7663), [@&#8203;ThatsMrTalbot](https://github.com/ThatsMrTalbot))
-   Added `app.kubernetes.io/managed-by: cert-manager` label to the created Let's Encrypt account keys ([#&#8203;7577](https://github.com/cert-manager/cert-manager/issues/7577), [@&#8203;terinjokes](https://github.com/terinjokes))
-   Added certificate issuance and expiration time metrics (`certmanager_certificate_not_before_timestamp_seconds`, `certmanager_certificate_not_after_timestamp_seconds`). ([#&#8203;7612](https://github.com/cert-manager/cert-manager/issues/7612), [@&#8203;solidDoWant](https://github.com/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 ([#&#8203;7083](https://github.com/cert-manager/cert-manager/issues/7083), [@&#8203;k0da](https://github.com/k0da))
-   Added the `iss` short name for the cert-manager `Issuer` resource. ([#&#8203;7373](https://github.com/cert-manager/cert-manager/issues/7373), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish))
-   Added the `ciss` short name for the cert-manager `ClusterIssuer` resource ([#&#8203;7373](https://github.com/cert-manager/cert-manager/issues/7373), [@&#8203;SgtCoDFish](https://github.com/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. ([#&#8203;7666](https://github.com/cert-manager/cert-manager/issues/7666), [@&#8203;ali-hamza-noor](https://github.com/ali-hamza-noor))
-   Allow customizing signature algorithm ([#&#8203;7591](https://github.com/cert-manager/cert-manager/issues/7591), [@&#8203;tareksha](https://github.com/tareksha))
-   Cache the full DNS response and handle TTL expiration in `FindZoneByFqdn` ([#&#8203;7596](https://github.com/cert-manager/cert-manager/issues/7596), [@&#8203;ThatsIvan](https://github.com/ThatsIvan))
-   Cert-manager now uses a local fork of the golang.org/x/crypto/acme package ([#&#8203;7752](https://github.com/cert-manager/cert-manager/issues/7752), [@&#8203;wallrj](https://github.com/wallrj))
-   Add support for [ACME profiles extension](https://datatracker.ietf.org/doc/draft-aaron-acme-profiles/). ([#&#8203;7777](https://github.com/cert-manager/cert-manager/issues/7777), [@&#8203;wallrj](https://github.com/wallrj))
-   Promote the `UseDomainQualifiedFinalizer` feature to GA. ([#&#8203;7735](https://github.com/cert-manager/cert-manager/issues/7735), [@&#8203;jsoref](https://github.com/jsoref))
-   Switched service/servicemon definitions to use port names instead of numbers. ([#&#8203;7727](https://github.com/cert-manager/cert-manager/issues/7727), [@&#8203;jcpunk](https://github.com/jcpunk))
-   The default value of `Certificate.Spec.PrivateKey.RotationPolicy` changed from `Never` to `Always`. ([#&#8203;7723](https://github.com/cert-manager/cert-manager/issues/7723), [@&#8203;wallrj](https://github.com/wallrj))
-   Potentially breaking: Set the default revisionHistoryLimit to 1 for the CertificateRequest revisions ([#&#8203;7758](https://github.com/cert-manager/cert-manager/issues/7758), [@&#8203;ali-hamza-noor](https://github.com/ali-hamza-noor))

##### Documentation

-   Fix some comments ([#&#8203;7620](https://github.com/cert-manager/cert-manager/issues/7620), [@&#8203;teslaedison](https://github.com/teslaedison))

##### Bug or Regression

-   Bump `go-jose` dependency to address `CVE-2025-27144`. ([#&#8203;7606](https://github.com/cert-manager/cert-manager/issues/7606), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish))
-   Bump `golang.org/x/oauth2` to patch `CVE-2025-22868`. ([#&#8203;7638](https://github.com/cert-manager/cert-manager/issues/7638), [@&#8203;NicholasBlaskey](https://github.com/NicholasBlaskey))
-   Bump `golang.org/x/crypto` to patch `GHSA-hcg3-q754-cr77`. ([#&#8203;7638](https://github.com/cert-manager/cert-manager/issues/7638), [@&#8203;NicholasBlaskey](https://github.com/NicholasBlaskey))
-   Bump `github.com/golang-jwt/jwt` to patch `GHSA-mh63-6h87-95cp`. ([#&#8203;7638](https://github.com/cert-manager/cert-manager/issues/7638), [@&#8203;NicholasBlaskey](https://github.com/NicholasBlaskey))
-   Change of the Kubernetes Ingress pathType from `ImplementationSpecific` to `Exact` for a reliable handling of ingress controllers and enhanced security. ([#&#8203;7767](https://github.com/cert-manager/cert-manager/issues/7767), [@&#8203;sspreitzer](https://github.com/sspreitzer))
-   Fix AWS Route53 error detection for not-found errors during deletion of DNS records. ([#&#8203;7690](https://github.com/cert-manager/cert-manager/issues/7690), [@&#8203;wallrj](https://github.com/wallrj))
-   Fix behavior when running with `--namespace=<namespace>`: limit the scope of cert-manager to a single namespace and disable cluster-scoped controllers. ([#&#8203;7678](https://github.com/cert-manager/cert-manager/issues/7678), [@&#8203;tsaarni](https://github.com/tsaarni))
-   Fix handling of certificates with IP addresses in the `commonName` field; IP addresses are no longer added to the DNS `subjectAlternativeName` list and are instead added to the `ipAddresses` field as expected. ([#&#8203;7081](https://github.com/cert-manager/cert-manager/issues/7081), [@&#8203;johnjcool](https://github.com/johnjcool))
-   Fix issuing of certificates via DNS01 challenges on Cloudflare after a breaking change to the Cloudflare API ([#&#8203;7549](https://github.com/cert-manager/cert-manager/issues/7549), [@&#8203;LukeCarrier](https://github.com/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. ([#&#8203;7609](https://github.com/cert-manager/cert-manager/issues/7609), [@&#8203;solidDoWant](https://github.com/solidDoWant))
-   Fixing the service account template to incorporate boolean values for the annotations. ([#&#8203;7698](https://github.com/cert-manager/cert-manager/issues/7698), [@&#8203;ali-hamza-noor](https://github.com/ali-hamza-noor))
-   Quote nodeSelector values in Helm Chart ([#&#8203;7579](https://github.com/cert-manager/cert-manager/issues/7579), [@&#8203;tobiasbp](https://github.com/tobiasbp))
-   Skip Gateway TLS listeners in `Passthrough` mode. ([#&#8203;6986](https://github.com/cert-manager/cert-manager/issues/6986), [@&#8203;vehagn](https://github.com/vehagn))
-   Upgrade `golang.org/x/net` fixing `CVE-2025-22870`. ([#&#8203;7619](https://github.com/cert-manager/cert-manager/issues/7619), [@&#8203;dependabot](https://github.com/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. ([#&#8203;7771](https://github.com/cert-manager/cert-manager/issues/7771), [@&#8203;wallrj](https://github.com/wallrj))
-   Patch the `third_party/forked/acme` package with support for the ACME profiles extension. ([#&#8203;7776](https://github.com/cert-manager/cert-manager/issues/7776), [@&#8203;wallrj](https://github.com/wallrj))
-   Promote the `AdditionalCertificateOutputFormats` feature to GA, making additional formats always enabled. ([#&#8203;7744](https://github.com/cert-manager/cert-manager/issues/7744), [@&#8203;erikgb](https://github.com/erikgb))
-   Remove deprecated feature gate `ValidateCAA`. Setting this feature gate is now a no-op which does nothing but print a warning log line ([#&#8203;7553](https://github.com/cert-manager/cert-manager/issues/7553), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish))
-   Update kind images to include the Kubernetes 1.33 node image ([#&#8203;7787](https://github.com/cert-manager/cert-manager/issues/7787), [@&#8203;cert-manager-bot](https://github.com/cert-manager-bot))
-   Upgrade Go to `v1.24.4` ([#&#8203;7785](https://github.com/cert-manager/cert-manager/issues/7785), [@&#8203;wallrj](https://github.com/wallrj))
-   Use slices.Contains to simplify code ([#&#8203;7753](https://github.com/cert-manager/cert-manager/issues/7753), [@&#8203;cuinix](https://github.com/cuinix))

### [`v1.17.3`](https://github.com/cert-manager/cert-manager/releases/tag/v1.17.3)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.17.2...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: [#&#8203;7337](https://github.com/cert-manager/cert-manager/issues/7337), [#&#8203;7444](https://github.com/cert-manager/cert-manager/issues/7444), and [#&#8203;7685](https://github.com/cert-manager/cert-manager/issues/7685).

> ℹ️ Be sure to review all new features and changes below, and read the [full release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.17) 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 ([#&#8203;7799](https://github.com/cert-manager/cert-manager/issues/7799), [@&#8203;wallrj](https://github.com/wallrj))
-   ACME: Increased challenge authorization timeout to 2 minutes to fix error `waiting for authorization` ([#&#8203;7798](https://github.com/cert-manager/cert-manager/issues/7798), [@&#8203;hjoshi123](https://github.com/hjoshi123))

##### Other (Cleanup or Flake)

-   Use the latest version of ingress-nginx in E2E tests to ensure compatibility ([#&#8203;7808](https://github.com/cert-manager/cert-manager/issues/7808), [@&#8203;wallrj](https://github.com/wallrj))

### [`v1.17.2`](https://github.com/cert-manager/cert-manager/releases/tag/v1.17.2)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.17.1...v1.17.2)

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 and includes various dependency updates.

> 📖 Read the full [cert-manager 1.17 release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.17), before installing or upgrading.

#### Changes since `v1.17.1`

##### Bug or Regression

-   Bump Go to `v1.23.8` to fix `CVE-2025-22871` ([#&#8203;7701](https://github.com/cert-manager/cert-manager/pull/7701), [`@wallrj`](https://github.com/wallrj))
-   Bump `go-jose` dependency to address `CVE-2025-27144` ([#&#8203;7603](https://github.com/cert-manager/cert-manager/pull/7603), [`@SgtCoDFish`](https://github.com/SgtCoDFish))
-   Bump `golang.org/x/net` to address `CVE-2025-22870` reported by Trivy ([#&#8203;7622](https://github.com/cert-manager/cert-manager/pull/7622), [`@SgtCoDFish`](https://github.com/SgtCoDFish))
-   Bump `golang.org/x/net` to fix `CVE-2025-22872` ([#&#8203;7703](https://github.com/cert-manager/cert-manager/pull/7703), [`@wallrj`](https://github.com/wallrj))
-   Bump `golang.org/x/oauth2` to patch `CVE-2025-22868` ([#&#8203;7692](https://github.com/cert-manager/cert-manager/pull/7692), [`@lentzi90`](https://github.com/lentzi90))
-   Bump `golang.org/x/crypto` to patch `GHSA-hcg3-q754-cr77` ([#&#8203;7692](https://github.com/cert-manager/cert-manager/pull/7692), [`@lentzi90`](https://github.com/lentzi90))
-   Bump `github.com/golang-jwt/jwt` to patch `GHSA-mh63-6h87-95cp` ([#&#8203;7692](https://github.com/cert-manager/cert-manager/pull/7692), [`@lentzi90`](https://github.com/lentzi90))

### [`v1.17.1`](https://github.com/cert-manager/cert-manager/releases/tag/v1.17.1)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.17.0...v1.17.1)

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

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

Many thanks to the community members who reported this issue!

#### Changes by Kind

##### Bug or Regression

-   ❗ Fix issuing of certificates via DNS01 challenges on Cloudflare after a breaking change to the Cloudflare API ([#&#8203;7565](https://github.com/cert-manager/cert-manager/issues/7565), [@&#8203;LukeCarrier](https://github.com/LukeCarrier))
-   Bump go to 1.23.6 to address CVE-2025-22866 reported by Trivy ([#&#8203;7563](https://github.com/cert-manager/cert-manager/issues/7563), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish)

### [`v1.17.0`](https://github.com/cert-manager/cert-manager/releases/tag/v1.17.0)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.16.5...v1.17.0)

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

v1.17.0 is a feature release with several improvements, including:

-   A helpful compliance change to RSA signatures on certificates
-   An easier way to specify passwords for [PKCS#12](https://github.com/PKCS/cert-manager/issues/12) and JKS keystores
-   A few feature flag promotions (and a deprecation)
-   Dependency bumps and other smaller improvements

#### Major Themes

##### RSA Certificate Compliance

The United States Department of Defense published [a memo](https://dl.dod.cyber.mil/wp-content/uploads/pki-pke/pdf/unclass-memo_dodcryptoalgorithms.pdf) in 2022 which introduced some requirements on the kinds of cryptography they require to be supported in software they use.

In effect, the memo requires that software be able to support larger RSA keys (3072-bit and 4096-bit) and hashing algorithms (SHA-384 at a minimum).

cert-manager supported large RSA keys long before the memo was published, but a quirk in implementation meant that cert-manager always used SHA-256 when signing with RSA.

In v1.17.0, cert-manager will choose a hash algorithm based on the RSA key length: 3072-bit keys will use SHA-384, and 4096-bit keys will use SHA-512. This matches similar behavior already present for ECDSA signatures.

Our expectation is that this change will have minimal impact beyond a slight increase to security and better compliance; we're not aware of Kubernetes based environments which support RSA 2048 with SHA-256 but fail with RSA 4096 and SHA-512. However, if you're using larger RSA keys, you should be aware of the change.

##### Easier Keystore Passwords for [PKCS#12](https://github.com/PKCS/cert-manager/issues/12) and JKS

Specifying passwords on [PKCS#12](https://github.com/PKCS/cert-manager/issues/12) and JKS keystores is supported in cert-manager
for compatibility reasons with software which expects or requires passwords to be set; however, these passwords are [not relevant to security](https://cert-manager.io/docs/faq/#why-are-passwords-on-jks-or-pkcs12-files-not-helpful) and never have been in cert-manager.

The initial implementation of the `keystores` feature required these "passwords" to be stored in a Kubernetes secret, which would then be read by cert-manager when creating the keystore after a certificate was issued. This is cumbersome, especially when many passwords are set to default values such as `changeit` or `password`.

In cert-manager v1.17, it's now possible to set a keystore password using a literal string value inside the `Certificate` resource itself, making this process much easier with no change to security.

For example:

```yaml
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: my-cert-password
spec:
  secretName: my-cert-password
  issuerRef:
    name: my-issuer
    kind: ClusterIssuer
  keystores:
    jks:
      create: true
      password: "abc123"
    pkcs12:
      create: true
      password: "password"
  dnsNames:
  - example.com
```

The new `password` field is mutually exclusive with the `passwordSecretRef` field, so be sure to only set one.

##### Feature Flag Promotions / Deprecations

cert-manager's feature flags allow for easier testing and adoption of new features with a reduced risk of breaking changes. In cert-manager v1.17, two feature gates have been promoted to "beta", and as such are now enabled by default in all installations:

-   `NameConstraints`, allowing users to specify the name constraints extension which can be helpful when creating CA certificates for private PKI
-   `UseDomainQualifiedFinalizer`, which stops a Kubernetes warning from being printed in logs

In addition, we added a new feature gate: `CAInjectorMerging`, which intelligently combines certificates used by the [`CAInjector`](../../concepts/ca-injector.md) component, making it safer to use when issuing certificates are rotated. If you're making heavy use of the CA injector, you should consider enabling this feature gate.

Finally, we deprecated the `ValidateCAA` feature gate which will be removed entirely in cert-manager v1.18.0. This feature gate aimed to validate the `CAA` DNS record during ACME issuance, but has seen low adoption and limited testing since its introduction back in 2019.

##### Other Changes

There are many other PRs which were merged in this release cycle and we'd encourage you to read the release notes below. One PR that's worth highlighting is a change to add more structured logging information to certain log lines.

If you were previously filtering logs using `grep` or similar tools (which is highly discouraged!) be aware that some log lines have changed format.

#### Community

As always, we'd like to thank all of the community members who helped in this release cycle, including all below who merged a PR and anyone that helped by commenting on issues, testing, or getting involved in cert-manager meetings. We're lucky to have you involved.

A special thanks to:

-   [@&#8203;hawksight](https://github.com/hawksight)
-   [@&#8203;aidy](https://github.com/aidy)
-   [@&#8203;bashlion](https://github.com/bashlion)
-   [@&#8203;7ing](https://github.com/7ing)
-   [@&#8203;fadecore](https://github.com/fadecore)
-   [@&#8203;schedin](https://github.com/schedin)
-   [@&#8203;jkroepke](https://github.com/jkroepke)
-   [@&#8203;sdarwin](https://github.com/sdarwin)

for their contributions, comments and support!

Also, thanks to the cert-manager maintainer team for their help in this release:

-   [@&#8203;inteon](https://github.com/inteon)
-   [@&#8203;erikgb](https://github.com/erikgb)
-   [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish)
-   [@&#8203;ThatsMrTalbot](https://github.com/ThatsMrTalbot)
-   [@&#8203;munnerz](https://github.com/munnerz)
-   [@&#8203;maelvls](https://github.com/maelvls)

And finally, thanks to the cert-manager steering committee for their feedback in this release cycle:

-   [@&#8203;FlorianLiebhart](https://github.com/FlorianLiebhart)
-   [@&#8203;ssyno](https://github.com/ssyno)
-   [@&#8203;ianarsenault](https://github.com/ianarsenault)
-   [@&#8203;TrilokGeer](https://github.com/TrilokGeer)

#### Changes by Kind

##### Feature

-   Potentially BREAKING: The CA and SelfSigned issuers now use SHA-512 when signing with RSA keys 4096 bits and above, and SHA-384 when signing with RSA keys 3072 bits and above. If you were previously using a larger RSA key as a CA, be sure to check that your systems support the new hash algorithms. ([#&#8203;7368](https://github.com/cert-manager/cert-manager/issues/7368), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish))
-   Add CAInjectorMerging feature gate to the ca-injector, enabling this will change the behaviour of the ca-injector to merge in new CA certificates instead of outright replacing the existing one. ([#&#8203;7469](https://github.com/cert-manager/cert-manager/issues/7469), [@&#8203;ThatsMrTalbot](https://github.com/ThatsMrTalbot))
-   Added image pull secrets to deployments when service accounts aren't created ([#&#8203;7411](https://github.com/cert-manager/cert-manager/issues/7411), [@&#8203;TheHenrick](https://github.com/TheHenrick))
-   Added the ability to customize client ID when using username/password authentication for Venafi client ([#&#8203;7484](https://github.com/cert-manager/cert-manager/issues/7484), [@&#8203;ilyesAj](https://github.com/ilyesAj))
-   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. ([#&#8203;7317](https://github.com/cert-manager/cert-manager/issues/7317), [@&#8203;wallrj](https://github.com/wallrj))
-   Increase the amount of PEM data `pki.DecodeX509CertificateSetBytes` is able to parse, to enable reading larger TLS trust bundles ([#&#8203;7464](https://github.com/cert-manager/cert-manager/issues/7464), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish))
-   New configuration option tenantID for the AzureDNS provider when using managed identities with service principals. This enhancement allows users to specify the tenant ID when using managed identities, offering better flexibility in multi-tenant environments. ([#&#8203;7376](https://github.com/cert-manager/cert-manager/issues/7376), [@&#8203;jochenrichter](https://github.com/jochenrichter))
-   Promote the `UseDomainQualifiedFinalizer` feature to Beta. ([#&#8203;7488](https://github.com/cert-manager/cert-manager/issues/7488), [@&#8203;jsoref](https://github.com/jsoref))
-   Allow JKS/PKCS12 keystore passwords to be set as literal values in Certificate resources, mutually exclusive with the existing passwordSecretRef field ([#&#8203;6657](https://github.com/cert-manager/cert-manager/issues/6657), [@&#8203;rquinio1A](https://github.com/rquinio1A))
-   Allow templating ServiceAccount annotations by running the built-in Helm `tpl` function on keys and values, to aid with workload identity configuration ([#&#8203;7501](https://github.com/cert-manager/cert-manager/issues/7501), [@&#8203;fcrespofastly](https://github.com/fcrespofastly))
-   Promote CA NameConstraints feature gate to Beta (enabled by default) ([#&#8203;7494](https://github.com/cert-manager/cert-manager/issues/7494), [@&#8203;tanujd11](https://github.com/tanujd11))

##### Documentation

-   Add example for IPv6 in `--dns01-recursive-nameservers` ([#&#8203;7367](https://github.com/cert-manager/cert-manager/issues/7367), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish))
-   Updated the chart documentation to show `enableGatewayAPI` in the config example. ([#&#8203;7354](https://github.com/cert-manager/cert-manager/issues/7354), [@&#8203;puerco](https://github.com/puerco))

##### Bug or Regression

-   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 (eg. credential Secrets). This is now fixed in v1.16.1+ and v1.17.0+ ([#&#8203;7339](https://github.com/cert-manager/cert-manager/issues/7339), [@&#8203;inteon](https://github.com/inteon))
-   BUGFIX: Helm will now accept percentages for the `podDisruptionBudget.minAvailable` and `podDisruptionBudget.maxAvailable` values. ([#&#8203;7343](https://github.com/cert-manager/cert-manager/issues/7343), [@&#8203;inteon](https://github.com/inteon))
-   Fix ACME HTTP-01 solver for IPv6 endpoints ([#&#8203;7391](https://github.com/cert-manager/cert-manager/issues/7391), [@&#8203;Peac36](https://github.com/Peac36))
-   Fix the behavior of `renewBeforePercentage` to comply with its spec ([#&#8203;7421](https://github.com/cert-manager/cert-manager/issues/7421), [@&#8203;adam-sroka](https://github.com/adam-sroka))
-   Helm: allow `enabled` to be set as a value to toggle cert-manager as a dependency. ([#&#8203;7350](https://github.com/cert-manager/cert-manager/issues/7350), [@&#8203;inteon](https://github.com/inteon))
-   SECURITY (low risk): Limit maximum allowed PEM size to prevent potential DoS in cert-manager controller from attacker-controlled PEM. See [GHSA-r4pg-vg54-wxx4](https://github.com/cert-manager/cert-manager/security/advisories/GHSA-r4pg-vg54-wxx4) ([#&#8203;7400](https://github.com/cert-manager/cert-manager/issues/7400), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish))
-   The Certificate object will no longer create CertificateRequest or Secret objects while being deleted ([#&#8203;7361](https://github.com/cert-manager/cert-manager/issues/7361), [@&#8203;ThatsMrTalbot](https://github.com/ThatsMrTalbot))
-   The issuer will now more quickly retry when its linked Secret is updated to fix an issue that caused a high back-off timeout. ([#&#8203;7455](https://github.com/cert-manager/cert-manager/issues/7455), [@&#8203;inteon](https://github.com/inteon))
-   Upgrades Venafi vCert library fixing a bug which caused the RSA 3072 bit key size for TPP certificate enrollment to not work. ([#&#8203;7498](https://github.com/cert-manager/cert-manager/issues/7498), [@&#8203;inteon](https://github.com/inteon))

##### Other (Cleanup or Flake)

-   ⚠️ Potentially BREAKING: Log messages that were not structured have now been replaced with structured logs. If you were matching on specific log strings, this could break your setup. ([#&#8203;7461](https://github.com/cert-manager/cert-manager/issues/7461), [@&#8203;inteon](https://github.com/inteon))
-   DEPRECATION: The `ValidateCAA` feature gate is now deprecated, with removal scheduled for cert-manager 1.18. In 1.17, enabling this feature gate will print a warning. ([#&#8203;7491](https://github.com/cert-manager/cert-manager/issues/7491), [@&#8203;jsoref](https://github.com/jsoref))
-   Remove `Neither --kubeconfig nor --master was specified` warning message when the controller and the webhook services boot ([#&#8203;7457](https://github.com/cert-manager/cert-manager/issues/7457), [@&#8203;Peac36](https://github.com/Peac36))
-   Move 'live' DNS tests into a separate package to contain test flakiness and improve developer UX ([#&#8203;7530](https://github.com/cert-manager/cert-manager/issues/7530), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish))

### [`v1.16.5`](https://github.com/cert-manager/cert-manager/releases/tag/v1.16.5)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.16.4...v1.16.5)

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 and includes various dependency updates.

> 📖 Read the full [cert-manager 1.16 release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.16), before installing or upgrading.

#### Changes since `v1.16.4`:

##### Bug or Regression

-   Bump Go to `v1.23.8` to fix `CVE-2025-22871` ([#&#8203;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` ([#&#8203;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` ([#&#8203;7707](https://github.com/cert-manager/cert-manager/pull/7707), [`@wallrj`](https://github.com/wallrj))
-   Bump `go-jose` dependency to address `CVE-2025-27144` ([#&#8203;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 ([#&#8203;7623](https://github.com/cert-manager/cert-manager/pull/7623), [`@SgtCoDFish`](https://github.com/SgtCoDFish))

### [`v1.16.4`](https://github.com/cert-manager/cert-manager/releases/tag/v1.16.4)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.16.3...v1.16.4)

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

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

Many thanks to the community members who reported this issue!

#### Changes by Kind

##### Bug or Regression

-   ❗ Fix issuing of certificates via DNS01 challenges on Cloudflare after a breaking change to the Cloudflare API ([#&#8203;7566](https://github.com/cert-manager/cert-manager/issues/7566), [@&#8203;LukeCarrier](https://github.com/LukeCarrier))
-   Bump go to 1.23.6 to address CVE-2025-22866 reported by Trivy ([#&#8203;7562](https://github.com/cert-manager/cert-manager/issues/7562), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish))
-   Update go to 1.23.5 ([#&#8203;7533](https://github.com/cert-manager/cert-manager/issues/7533), [@&#8203;tareksha](https://github.com/tareksha))

### [`v1.16.3`](https://github.com/cert-manager/cert-manager/releases/tag/v1.16.3)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.16.2...v1.16.3)

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

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 [#&#8203;7421](https://github.com/cert-manager/cert-manager/issues/7421) for more information.

#### Changes

##### Bug

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

##### Other

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

### [`v1.16.2`](https://github.com/cert-manager/cert-manager/releases/tag/v1.16.2)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.16.1...v1.16.2)

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

This patch release of cert-manager 1.16 makes [several changes](https://github.com/cert-manager/cert-manager/pull/7401) to how PEM input is validated, 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 information is available in 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.

#### Changes by Kind

##### Bug or Regression

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

##### Other (Cleanup or Flake)

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

### [`v1.16.1`](https://github.com/cert-manager/cert-manager/releases/tag/v1.16.1)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.16.0...v1.16.1)

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

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.

📖 Read the [complete 1.16 release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.16) before upgrading.

#### 📜Changes since `v1.16.0`

##### Bug or Regression

-   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. ([#&#8203;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. ([#&#8203;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. ([#&#8203;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`. ([#&#8203;7342](https://github.com/cert-manager/cert-manager/pull/7342), [`@inteon`](https://github.com/inteon))

### [`v1.16.0`](https://github.com/cert-manager/cert-manager/releases/tag/v1.16.0)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.15.5...v1.16.0)

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

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.

📖 Read the [complete 1.16 release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.16) at cert-manager.io.

#### ⚠️ Known issues

1.  [Helm Chart: JSON schema prevents the chart being used as a sub-chart on Rancher RKE](https://github.com/cert-manager/cert-manager/issues/7329).
2.  [ACME DNS01 **ClusterIssuer** fail while loading credentials from Secret resources](https://github.com/cert-manager/cert-manager/issues/7331).

#### ❗ Breaking changes

1.  Helm schema validation may reject your existing Helm values files if they contain typos or unrecognized fields.
2.  Venafi Issuer may fail to renew certificates if the requested duration conflicts with the CA’s minimum or maximum policy settings in Venafi.
3.  Venafi Issuer may fail to renew Certificates if the issuer has been configured for TPP with username-password authentication.

📖 Read the [complete 1.16 release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.16) at cert-manager.io.

#### 📜 Changes since v1.15.0

📖 Read the [complete 1.16 release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.16) at cert-manager.io.

##### Feature

-   Add `SecretRef` support for Venafi TPP issuer CA Bundle ([#&#8203;7036](https://github.com/cert-manager/cert-manager/pull/7036), [`@sankalp-at-gh`](https://github.com/sankalp-at-gh))
-   Add `renewBeforePercentage` alternative to `renewBefore` ([#&#8203;6987](https://github.com/cert-manager/cert-manager/pull/6987), [`@cbroglie`](https://github.com/cbroglie))
-   Add a metrics server to the cainjector ([#&#8203;7194](https://github.com/cert-manager/cert-manager/pull/7194), [`@wallrj`](https://github.com/wallrj))
-   Add a metrics server to the webhook ([#&#8203;7182](https://github.com/cert-manager/cert-manager/pull/7182), [`@wallrj`](https://github.com/wallrj))
-   Add client certificate auth method for Vault issuer ([#&#8203;4330](https://github.com/cert-manager/cert-manager/pull/4330), [`@joshmue`](https://github.com/joshmue))
-   Add process and go runtime metrics for controller ([#&#8203;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 ([#&#8203;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. ([#&#8203;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 ([#&#8203;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. ([#&#8203;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. ([#&#8203;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`. ([#&#8203;7299](https://github.com/cert-manager/cert-manager/pull/7299), [`@wallrj`](https://github.com/wallrj))
-   Helm: adds JSON schema validation for the Helm values. ([#&#8203;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. ([#&#8203;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. ([#&#8203;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. ([#&#8203;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. ([#&#8203;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. ([#&#8203;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 [#&#8203;4653](https://github.com/cert-manager/cert-manager/issues/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. ([#&#8203;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. ([#&#8203;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. ([#&#8203;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` ([#&#8203;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. ([#&#8203;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. ([#&#8203;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. ([#&#8203;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. ([#&#8203;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. ([#&#8203;7259](https://github.com/cert-manager/cert-manager/pull/7259), [`@wallrj`](https://github.com/wallrj))
-   Bump `grpc-go` to fix `GHSA-xr7q-jx4m-x55m` ([#&#8203;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` ([#&#8203;7125](https://github.com/cert-manager/cert-manager/pull/7125), [`@SgtCoDFish`](https://github.com/SgtCoDFish))
-   Fix Azure DNS causing panics whenever authentication error happens ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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. ([#&#8203;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. ([#&#8203;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) ([#&#8203;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` ([#&#8203;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 ([#&#8203;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. ([#&#8203;7237](https://github.com/cert-manager/cert-manager/pull/7237), [`@inteon`](https://github.com/inteon))
-   Bump Go to `v1.23.2` ([#&#8203;7324](https://github.com/cert-manager/cert-manager/pull/7324), [`@cert-manager-bot`](https://github.com/cert-manager-bot))

### [`v1.15.5`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.5)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.15.4...v1.15.5)

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

cert-manager v1.15.5 contains simple dependency bumps 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.

#### Changes

##### Bug or Regression

-   Bump golang.org/x/net to address CVE-2024-45337 and CVE-2024-45338 ([#&#8203;7496](https://github.com/cert-manager/cert-manager/issues/7496), [@&#8203;wallrj](https://github.com/wallrj))

##### Other (Cleanup or Flake)

-   Bump to go 1.22.10 ([#&#8203;7507](https://github.com/cert-manager/cert-manager/issues/7507), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish))

### [`v1.15.4`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.4)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.15.3...v1.15.4)

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

This patch release of cert-manager 1.15 makes [several changes](https://github.com/cert-manager/cert-manager/pull/7403) to how PEM input is validated, 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 information is available in 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.15 was updated along with the base images, and a Route53 bug fix was backported.

#### Changes by Kind

##### Bug or Regression

-   Bugfix: Prevent aggressive Route53 retries caused by STS authentication failures by removing the Amazon Request ID from STS errors. ([#&#8203;7261](https://github.com/cert-manager/cert-manager/pull/7261), [@&#8203;cert-manager-bot](https://github.com/cert-manager-bot))
-   Set a maximum size for PEM inputs which cert-manager will accept to remove possibility of taking a long time to process an input ([#&#8203;7402](https://github.com/cert-manager/cert-manager/pull/7402), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish))

##### Other (Cleanup or Flake)

-   Bump go to 1.22.9 ([#&#8203;7424](https://github.com/cert-manager/cert-manager/pull/7424), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish))
-   Upgrade Go to 1.22.8, the latest available patch release ([#&#8203;7406](https://github.com/cert-manager/cert-manager/pull/7406), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish))

### [`v1.15.3`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.3)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.15.2...v1.15.3)

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

**🔗 [See v1.15.0](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.0) for more information about cert-manager 1.15 and read-before-upgrade info.**

#### 📜 Changes since [`v1.15.2`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.2)

##### Bug or Regression

-   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. ([#&#8203;7232](https://github.com/cert-manager/cert-manager/issues/7232), [@&#8203;cert-manager-bot](https://github.com/cert-manager-bot))

### [`v1.15.2`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.2)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.15.1...v1.15.2)

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

**🔗 [See v1.15.0](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.0) for more information about cert-manager 1.15 and read-before-upgrade info.**

#### 📜 Changes since [`v1.15.1`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.1)

##### Bug or Regression

-   BUGFIX `route53`: explicitly set the `aws-global` STS region which is now required by the `github.com/aws/aws-sdk-go-v2` library. ([#&#8203;7189](https://github.com/cert-manager/cert-manager/pull/7189), [`@cert-manager-bot`](https://github.com/cert-manager-bot))
-   Bump `grpc-go` to fix `GHSA-xr7q-jx4m-x55m` ([#&#8203;7167](https://github.com/cert-manager/cert-manager/pull/7167), [`@SgtCoDFish`](https://github.com/SgtCoDFish))
-   Fix Azure DNS causing panics whenever authentication error happens ([#&#8203;7188](https://github.com/cert-manager/cert-manager/pull/7188), [`@cert-manager-bot`](https://github.com/cert-manager-bot))
-   Fix incorrect value and indentation of `endpointAdditionalProperties` in the `PodMonitor` template of the Helm chart ([#&#8203;7191](https://github.com/cert-manager/cert-manager/pull/7191), [`@inteon`](https://github.com/inteon))
-   Fixes ACME HTTP01 challenge behavior when using Gateway API to prevent unbounded creation of `HTTPRoute` resources ([#&#8203;7186](https://github.com/cert-manager/cert-manager/pull/7186), [`@cert-manager-bot`](https://github.com/cert-manager-bot))
-   Upgrade `golang` from `1.22.3` to `1.22.5` ([#&#8203;7165](https://github.com/cert-manager/cert-manager/pull/7165), [`@github-actions`](https://github.com/github-actions))

### [`v1.15.1`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.1)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.15.0...v1.15.1)

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

**🔗 [See v1.15.0](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.0) for more information about cert-manager 1.15 and read-before-upgrade info.**

#### 📜 Changes since [v1.15.0](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.0)

##### Bug or Regression

-   BUGFIX: fix issue that caused Vault issuer to not retry signing when an error was encountered. ([#&#8203;7111](https://github.com/cert-manager/cert-manager/issues/7111), [@&#8203;inteon](https://github.com/inteon))

##### Other (Cleanup or Flake)

-   Update github.com/Azure/azure-sdk-for-go/sdk/azidentity to address CVE-2024-35255 ([#&#8203;7092](https://github.com/cert-manager/cert-manager/issues/7092), [@&#8203;ThatsMrTalbot](https://github.com/ThatsMrTalbot))
-   Bump the go-retryablehttp dependency to fix CVE-2024-6104 ([#&#8203;7130](https://github.com/cert-manager/cert-manager/issues/7130), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish))

### [`v1.15.0`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.0)

[Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.14.7...v1.15.0)

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

cert-manager 1.15 promotes several features to beta, including GatewayAPI support (`ExperimentalGatewayAPISupport`), the ability to provide a subject in the Certificate that will be used literally in the CertificateSigningRequest (`LiteralCertificateSubject`) and the outputting of additional certificate formats (`AdditionalCertificateOutputFormats`).

> \[!NOTE]
>
> The `cmctl` binary have been moved to https://github.com/cert-manager/cmctl/releases.
> For the startupapicheck Job you should update references to point at `quay.io/jetstack/cert-manager-startupapicheck`

> \[!NOTE]
>
> From this release, the Helm chart will no longer uninstall the CRDs when the chart is uninstalled. If you want the CRDs to be removed on uninstall use `crds.keep=false` when installing the Helm chart.

#### Community

Thanks again to all open-source contributors with commits in this release, including: [@&#8203;Pionerd](https://github.com/Pionerd), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish), [@&#8203;ThatsMrTalbot](https://github.com/ThatsMrTalbot), [@&#8203;andrey-dubnik](https://github.com/andrey-dubnik), [@&#8203;bwaldrep](https://github.com/bwaldrep), [@&#8203;eplightning](https://github.com/eplightning), [@&#8203;erikgb](https://github.com/erikgb), [@&#8203;findnature](https://github.com/findnature), [@&#8203;gplessis](https://github.com/gplessis), [@&#8203;import-shiburin](https://github.com/import-shiburin), [@&#8203;inteon](https://github.com/inteon), [@&#8203;jkroepke](https://github.com/jkroepke), [@&#8203;lunarwhite](https://github.com/lunarwhite), [@&#8203;mangeshhambarde](https://github.com/mangeshhambarde), [@&#8203;pwhitehead-splunk](https://github.com/pwhitehead-splunk) & [@&#8203;rodrigorfk](https://github.com/rodrigorfk), [@&#8203;wallrj](https://github.com/wallrj).

Thanks also to the following cert-manager maintainers for their contributions during this release: [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish), [@&#8203;SpectralHiss](https://github.com/SpectralHiss), [@&#8203;ThatsMrTalbot](https://github.com/ThatsMrTalbot), [@&#8203;hawksight](https://github.com/hawksight), [@&#8203;inteon](https://github.com/inteon), [@&#8203;maelvls](https://github.com/maelvls) & [@&#8203;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.

#### Changes by Kind

##### Feature

-   GatewayAPI support has graduated to Beta. Add the `--enable-gateway-api` flag to enable the integration. ([#&#8203;6961](https://github.com/cert-manager/cert-manager/issues/6961), [@&#8203;ThatsMrTalbot](https://github.com/ThatsMrTalbot))
-   Add support to specify a custom key alias in a JKS Keystore ([#&#8203;6807](https://github.com/cert-manager/cert-manager/issues/6807), [@&#8203;bwaldrep](https://github.com/bwaldrep))
-   Add the ability to communicate with Vault via mTLS when strict client certificates is enabled at Vault server side ([#&#8203;6614](https://github.com/cert-manager/cert-manager/issues/6614), [@&#8203;rodrigorfk](https://github.com/rodrigorfk))
-   Added option to provide additional audiences in the service account auth section for vault ([#&#8203;6718](https://github.com/cert-manager/cert-manager/issues/6718), [@&#8203;andrey-dubnik](https://github.com/andrey-dubnik))
-   Venafi Issuer now sends a cert-manager HTTP User-Agent header in all Venafi Rest API requests.
    For example: `cert-manager-certificaterequests-issuer-venafi/v1.15.0+(linux/amd64)+cert-manager/ef068a59008f6ed919b98a7177921ddc9e297200`. ([#&#8203;6865](https://github.com/cert-manager/cert-manager/issues/6865), [@&#8203;wallrj](https://github.com/wallrj))
-   Add hint to validation error message to help users of external issuers more easily fix the issue if they specify a Kind but forget the Group ([#&#8203;6913](https://github.com/cert-manager/cert-manager/issues/6913), [@&#8203;SgtCoDFish](https://github.com/SgtCoDFish))
-   Add support for numeric OID types in LiteralSubject. Eg. "1.2.3.4=String Value" ([#&#8203;6775](https://github.com/cert-manager/cert-manager/issues/6775), [@&#8203;inteon](https://github.com/inteon))
-   Promote the `LiteralCertificateSubject` feature to Beta. ([#&#8203;7030](https://github.com/cert-manager/cert-manager/issues/7030), [@&#8203;inteon](https://github.com/inteon))
-   Promoted the AdditionalCertificateOutputFormats feature gate to Beta (enabled by default). ([#&#8203;6970](https://github.com/cert-manager/cert-manager/issues/6970), [@&#8203;erikgb](https://github.com/erikgb))
-   The Helm chart now allows you to supply `extraObjects`; a list of yaml manifests which will helm will install and uninstall with the cert-manager manifests. ([#&#8203;6424](https://github.com/cert-manager/cert-manager/issues/6424), [@&#8203;gplessis](https://github.com/gplessis))
-   Update the Route53 provider to support fetching credentials using AssumeRoleWithWebIdentity ([#&#8203;6878](https://github.com/cert-manager/cert-manager/issues/6878), [@&#8203;pwhitehead-splunk](https://github.com/pwhitehead-splunk))
-   Helm can now add optional hostAliases to cert-manager Pod to allow the DNS self-check to pass in custom scenarios. ([#&#8203;6456](https://github.com/cert-manager/cert-manager/issues/6456), [@&#8203;Pionerd](https://github.com/Pionerd))
-   Added a new Ingress annotation for copying specific Ingress annotations to Certificate's secretTemplate ([#&#8203;6839](https://github.com/cert-manager/cert-manager/issues/6839), [@&#8203;mangeshhambarde](https://github.com/mangeshhambarde))
-   Added option to define additional token audiences for the Vault Kubernetes auth ([#&#8203;6744](https://github.com/cert-manager/cert-manager/issues/6744), [@&#8203;andrey-dubnik](https://github.com/andrey-dubnik))
-   Allow `cert-manager.io/allow-direct-injection` in annotations ([#&#8203;6801](https://github.com/cert-manager/cert-manager/issues/6801), [@&#8203;jkroepke](https://github.com/jkroepke))

##### Design

-   Remove repetitive words ([#&#8203;6949](https://github.com/cert-manager/cert-manager/issues/6949), [@&#8203;findnature](https://github.com/findnature))

##### Bug or Regression

-   BUGFIX: Fixes issue with JSON-logging, where only a subset of the log messages were output as JSON. ([#&#8203;6779](https://github.com/cert-manager/cert-manager/issues/6779), [@&#8203;inteon](https://github.com/inteon))
-   BUGFIX: JKS and PKCS12 stores now contain the full set of CAs specified by an issuer ([#&#8203;6806](https://github.com/cert-manager/cert-manager/issues/6806), [@&#8203;bwaldrep](https://github.com/bwaldrep))
-   BUGFIX: cainjector leaderelection flag/config option defaults are missing ([#&#8203;6816](https://github.com/cert-manager/cert-manager/issues/6816), [@&#8203;inteon](https://github.com/inteon))
-   BUGFIX: cert-manager issuers incorrectly copied the critical flag from the CSR instead of re-calculating that field themselves. ([#&#8203;6724](https://github.com/cert-manager/cert-manager/issues/6724), [@&#8203;inteon](https://github.com/inteon))
-   Breaking Change: Fixed unintended certificate chain is used if `preferredChain` is configured. ([#&#8203;6755](https://github.com/cert-manager/cert-manager/issues/6755), [@&#8203;import-shiburin](https://github.com/import-shiburin))
-   Bugfix: LiteralSubjects with a #= value can result in memory issues due to faulty BER parser (github.com/go-asn1-ber/asn1-ber). ([#&#8203;6770](https://github.com/cert-manager/cert-manager/issues/6770), [@&#8203;inteon](https://github.com/inteon))
-  …
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. area/acme Indicates a PR directly modifies the ACME Issuer code dco-signoff: yes Indicates that all commits in the pull request have the valid DCO sign-off message. kind/feature Categorizes issue or PR as related to a new feature. lgtm Indicates that a PR is ready to be merged. ok-to-test release-note Denotes a PR that will be considered when it comes time to generate release notes. size/XS Denotes a PR that changes 0-9 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants