Skip to main content
Redhat Developers  Logo
  • AI

    Get started with AI

    • Red Hat AI
      Accelerate the development and deployment of enterprise AI solutions.
    • AI learning hub
      Explore learning materials and tools, organized by task.
    • AI interactive demos
      Click through scenarios with Red Hat AI, including training LLMs and more.
    • AI/ML learning paths
      Expand your OpenShift AI knowledge using these learning resources.
    • AI quickstarts
      Focused AI use cases designed for fast deployment on Red Hat AI platforms.
    • No-cost AI training
      Foundational Red Hat AI training.

    Featured resources

    • OpenShift AI learning
    • Open source AI for developers
    • AI product application development
    • Open source-powered AI/ML for hybrid cloud
    • AI and Node.js cheat sheet

    Red Hat AI Factory with NVIDIA

    • Red Hat AI Factory with NVIDIA is a co-engineered, enterprise-grade AI solution for building, deploying, and managing AI at scale across hybrid cloud environments.
    • Explore the solution
  • Learn

    Self-guided

    • Documentation
      Find answers, get step-by-step guidance, and learn how to use Red Hat products.
    • Learning paths
      Explore curated walkthroughs for common development tasks.
    • Guided learning
      Receive custom learning paths powered by our AI assistant.
    • See all learning

    Hands-on

    • Developer Sandbox
      Spin up Red Hat's products and technologies without setup or configuration.
    • Interactive labs
      Learn by doing in these hands-on, browser-based experiences.
    • Interactive demos
      Click through product features in these guided tours.

    Browse by topic

    • AI/ML
    • Automation
    • Java
    • Kubernetes
    • Linux
    • See all topics

    Training & certifications

    • Courses and exams
    • Certifications
    • Skills assessments
    • Red Hat Academy
    • Learning subscription
    • Explore training
  • Build

    Get started

    • Red Hat build of Podman Desktop
      A downloadable, local development hub to experiment with our products and builds.
    • Developer Sandbox
      Spin up Red Hat's products and technologies without setup or configuration.

    Download products

    • Access product downloads to start building and testing right away.
    • Red Hat Enterprise Linux
    • Red Hat AI
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    Featured

    • Red Hat build of OpenJDK
    • Red Hat JBoss Enterprise Application Platform
    • Red Hat OpenShift Dev Spaces
    • Red Hat Developer Toolset

    References

    • E-books
    • Documentation
    • Cheat sheets
    • Architecture center
  • Community

    Get involved

    • Events
    • Live AI events
    • Red Hat Summit
    • Red Hat Accelerators
    • Community discussions

    Follow along

    • Articles & blogs
    • Developer newsletter
    • Videos
    • Github

    Get help

    • Customer service
    • Customer support
    • Regional contacts
    • Find a partner

    Join the Red Hat Developer program

    • Download Red Hat products and project builds, access support documentation, learning content, and more.
    • Explore the benefits

Implement mTLS and zero trust with cert-manager and trust-manager

June 25, 2026
Nick Png
Related topics:
KubernetesSecurityZero trust
Related products:
Red Hat OpenShift

    We are excited to announce significant upgrades to the cert-manager operator for Red Hat OpenShift. We recently released version 1.19 of the operator, which contains an exciting new feature: the technology preview of trust-manager. The trust-manager controller is an optional add-on feature, enabling administrators to customize and distribute bundles of trusted certificate authorities (CAs) to workloads across Kubernetes clusters. This enhancement accentuates the core capabilities of cert-manager and extends them into the management of trusted CAs. With the combination of cert-manager and trust-manager, cluster administrators can automate the management of TLS certificates at scale, as well as the chains of trust used to verify the provenance of these certificates. These two concepts establish the building blocks for true mutual transport layer security (mTLS) between any workload running on OpenShift.

    TLS vs mTLS

    To highlight the benefits of trust-manager, we will give a little background about transport layer security (TLS) and its more secure iteration, mutual transport layer security (mTLS). This section provides a high-level overview of these concepts to establish a common understanding of key terms and assumptions. If you would like to explore a deeper understanding of TLS or mTLS, this Cloudflare blog is a good start.

    First, to facilitate a secure TLS handshake, we require two artifacts: the CA bundle and the TLS certificate. In an enterprise environment, the CA bundle serves as the trust anchor. It is a collection of public key certificates belonging to the Root CA and, optionally, a set of subsequent Intermediate CAs. This bundle provides the reference needed for a client (and server, in mTLS scenarios) to verify that a presented certificate is authentic. The TLS certificate acts as the identity presented during the handshake process. To establish a connection, this certificate must be part of a valid cryptographic chain terminating at the root CA contained within the CA bundle.

    Now, let’s evaluate the steps of a standard (one-way) TLS and (two-way) mTLS handshake. The most common form of network communication is TLS, a methodology found in web browsers or in many protocols that use HTTPS, such as API calls. For TLS, the following occurs:

    1. The client (e.g., web browser) initiates communication.
    2. The server (e.g., backend web server) responds to the client with a TLS certificate.
    3. The client validates the provided certificate against its local CA bundle. It must mathematically prove that a CA present within the bundle signed the certificate.
    4. Success: The client confirms that the certificate is valid, and the encrypted session is established.
    5. Failure: The certificate is not valid (e.g., self-signed, expired, issued by an untrusted CA). The client terminates the connection; or in the case of some web browsers, warns the user that it does not trust the server’s certificate, and the user should proceed with caution.

    By comparison, in higher security zero trust environments, mTLS can be used to ensure validation from both partners in the handshake:

    1. The client initiates communication.
    2. The server responds to the client with its TLS certificate.
    3. The client validates the provided certificate against its local CA bundle. It must mathematically prove that a CA present within the bundle signed the certificate.
    4. The client then sends its certificate to the server.
    5. The server validates the provided certificate against its local CA bundle. It must mathematically prove that a CA present within the bundle signed the certificate.
    6. Success: The client and server confirm the other certificate is valid, and the encrypted session is established.
    7. Failure: Either the client or the server cannot verify the other certificate against their respective CA bundles, and the connection terminates. 

    Back to OpenShift

    Now that we have laid the groundwork, let’s shift our focus back to OpenShift.

    cert-manager

    The cert-manager operator for OpenShift has been available for a long time, and since its GA release back on OpenShift 4.14, its adoption has grown considerably. The core tenet of cert-manager is the automated lifecycle management of TLS certificates for applications living on OpenShift. This covers half the battle by enabling teams to automate the issuance, renewal, and rotation of TLS certificates. 

    Industry trends are shifting away from longer lived certificates (>= 90 days) towards certificates issued at much shorter intervals, including every 24 hours in some instances. One of the basic principles of zero trust architecture is to assume there is always a breach. As a result, reducing the lifespan of a certificate that a malicious actor could utilize to impersonate a trusted entity can significantly reduce the blast radius or impact of such a leaked certificate. However, this presents another issue: scale. Shorter certificate lifespans necessitates certificate issuance and a much higher rate. Performing the manual rotation of thousands of certificates in production on significantly shorter intervals is simply infeasible, but cert-manager’s capabilities enable security conscious teams to adopt these methodologies at scale on OpenShift. 

    trust-manager

    To continue, let’s use a simple example of a passport, where the certificate is the passport. In order to verify a passport, the customs agent will look for a few things: watermarks, holographic seals, etc. This happens before the agent eventually attempts to verify that the passport is legitimate and that you are the real owner of said passport. This is where CA trust bundles come into play. Agents are trained and informed ahead of time in order to validate the question: Is this passport actually created and issued by a legitimate authority?

    For a TLS handshake, this is where the CA bundle comes into play. A typical web browser has access to a bundle of well known, publicly trusted certificates from reputable sources. However, for enterprises, relying on public CAs is not possible as scaling and sovereignty issues arise very quickly. For example, public CAs can only issue certificates for domains that can be verified on the public internet. This requirement breaks down for any non-public DNS use case with internal domains such as cluster.internal.corp. Instead, enterprises manually build bundles of trusted CAs and distribute these across multiple clusters, namespaces, and users. 

    Trust-manager enables DevSecOps teams to perform three vital tasks associated with distributing trust across an OpenShift cluster: constructing custom bundles of CAs, distributing these custom bundles to workloads, and automatically updating the custom bundles when CA certificates are renewed or rotated. This makes it an obvious solution for enterprises searching for a way to more closely align with zero trust principles in a scalable and automated fashion. 

    Trust-manager introduces a new Custom Resource (CR) called a Bundle (see the following example), which can group CA certificates from multiple sources and secretRefs. One caveat is that CA certificates must exist in the trustNamespace which is configured during the controller installation process. This is intended as an extra layer of security to the trust-manager controller. Additionally, these bundles can be distributed to specific namespaces or made available cluster-wide. In the following example, you can see the option namespaceSelector is used to inject the trust Bundle into any namespace with the trust.cert-manager.io/inject: "true" label. The Bundle resource supports any Secret or ConfigMap as a source and trust-manager will synchronize the generated trust bundle whenever one of the sources is updated whether manually or through automation. This is particularly convenient for certificates managed by cert-manager as trust-manager is able to track the changes made by cert-manager automatically and at scale. Finally, trust-manager supports the parameter useDefaultCAs as a source, simplifying the process of injecting platform level CAs into bundles for workload consumption. 

    apiVersion: trust.cert-manager.io/v1alpha1
    kind: Bundle
    metadata:
      name: demo-trust-bundle
    spec:
      sources:
        - secret:
            name: intermediate-ca-secret
            key: "tls.crt"
        - secret:
            name: root-ca-secret
            key: "ca.crt"
        - useDefaultCAs: true
      target:
        configMap:
          key: "ca-bundle.crt"
        namespaceSelector:
          matchLabels:
            trust.cert-manager.io/inject: "true"

    Trust-manager for TLS and mTLS

    At this point we’ve covered a whole lot of information, and while the picture might be starting to take shape, we have not made it clear exactly how cert-manager and trust-manager changes the landscape for mTLS. These next two sections will hopefully help complete the picture.

    Standard TLS

    Figure 1 illustrates how you might deploy trust-manager for standard TLS implementations. 

    A diagram illustrates the workflow for cert-manager and trust-manager enabling TLS between two workloads on OpenShift.
    Figure 1: This diagram illustrates the workflow for cert-manager and trust-manager enabling TLS between two workloads on OpenShift.

    The critical first step here is that trust-manager benefits from cert-manager’s ability to connect to almost any external PKI. This means that an enterprise can wire up cert-manager to connect to their PKI of choice. Cert-manager handles the process of issuing and renewing TLS CA and leaf certificates, and trust-manager takes care of bundling the necessary CA certificates into usable trust bundles. You’ll also note that the Root CA should live within the external PKI and is not expected to be loaded to the OpenShift cluster. This introduces a significant improvement to the security of an organization as a whole as a breach to the OpenShift cluster will never expose the Root certificate authority private key, which is used as the highest level of authority for minting TLS certificates. Instead, we use cert-manager’s core feature set to create an Intermediate CA that can be used to establish a chain of trust all the way to the Root CA.

    Furthermore, you can follow the path of how certificates and bundles are distributed within different namespaces. In the simple example above, the server pod in namespace A receives a TLS certificate minted by the intermediate CA in the cert-manager namespace, and the client pod in namespace B receives the Bundle from trust-manager including the public keys of the intermediate and root CAs so that when it communicates with the server pod, it can verify that the TLS certificate supplied was properly signed by both CAs.

    Mutual TLS

    Continuing on to mTLS, we can see that double the number of resources are necessary. For the previous simple example, we needed one TLS certificate and one trust bundle. Now we need two of each. In Figure 2, we can follow the requirements for a simplified mTLS scenario.

    A diagram of the workflow for cert-manager and trust-manager enabling mutual TLS between two workloads on OpenShift.
    Figure 2: This diagram illustrates the workflow for cert-manager and trust-manager enabling mutual TLS between two workloads on OpenShift.

    Compared to the standard TLS scenario, there are two significant differences:

    • Each namespace gets the trust bundle including the public keys from the root CA and the intermediate CA of its counterpart.
    • Each running workload (i.e., pod) gets a signed TLS certificate. Pod A in namespace A get a TLS certificate signed by intermediate CA - A, and Pod B gets a TLS certificate signed by intermediate CA - B

    From here, the mTLS handshake proceeds as described in the previous introductory section. However, it is important to point out one critical trait about each of the trust bundles. They are completely unique to each other. Bundle A will only include the public keys from their respective intermediate CA and the root CA. This introduces an additional layer of security as a bad actor would need to access both namespaces to gain complete knowledge of how these workloads interact with each other. 

    The impact of trust-manager

    Trust-manager extends the feature set of cert-manager significantly. But what does this look like in a production environment? We can simplify the blast radius of a breach in two dimensions: time and impact (permissions). A credential leak that is long lived and highly permissive is the worst possible scenario. For TLS, leaking either the certificate or the CA bundle can be disastrous. The CA bundle essentially contains a map of who to trust and how, including important metadata like internal hostnames or infrastructure layout. This information is vital to bad actors in their goals of exploiting gaps in security.

    At scale, it becomes very difficult for IT teams to manage hundreds, or thousands of TLS certificates let alone creating, managing, and distributing custom CA bundles associated with these certificates. As a result, it is common practice to have fewer CA bundles rotated or renewed at much longer intervals of 90 days or more. Additionally, the implicit requirement for fewer bundles results in bundles with more generalized chains of trust that apply to multiple teams, workloads, or pillars within an organization. While this reduces the workload of IT teams to a manageable level, it also increases the risk and impact of a breach.

    With the combination of cert-manager and trust-manager, you can rotate leaf and CA certificates at much shorter intervals, significantly reducing the overall impact of a breach. Previously, it was much more difficult to rotate CA certificates at shorter intervals because this added additional manual tasks of reconstructing and distributing new trust bundles. Trust-manager automatically reconciles its bundle object with new CA certificate public keys whenever cert-manager rotates the CA certificate, and redistributes the new bundle to designated namespaces. This significantly reduces the manual workload of updating CAs, and makes it much easier to rotate not only leaf certificates at shorter intervals but the CAs that mint these leaf certificates. This allows DevSecOps teams to completely automate away the toil associated with manually managing TLS certificates and the bundles of trust used to validate them. 

    As an added benefit, using trust-manager introduces another core pillar of zero trust: the principle of least privilege. Since you can now automate at scale the management of trust bundles, it is much easier to create and maintain curated bundles of trust for specific workloads or groups of workloads, where only extremely specific certificate authorities are trusted. OpenShift clusters can now have many, smaller bundles of trust dedicated to specific namespaces, limiting the risk of a breach since no one bundle will contain the complete map of the kingdom.

    Try trust-manager

    If you are interested in trying this out for yourself, head to the GitHub repository. It contains a simple demo of mTLS in action with trust-manager and cert-manager. Additionally, you can find documentation on how to install trust-manager on OpenShift. You can also find more details about the trust-manager controller in the upstream documentation. 

    Related Posts

    • Automatic certificate provisioning with cert-manager and DNS challenge

    • Automatic certificate issuing with IdM and cert-manager operator for OpenShift

    • Integrate zero trust workload identity manager with Red Hat OpenShift GitOps

    • Zero trust security and dynamic credentials on OpenShift

    Recent Posts

    • How to integrate OpenShift AI and PG Airman MCP Server

    • Build a RHEL environment with image builder and content templates

    • Implement mTLS and zero trust with cert-manager and trust-manager

    • Why you should use Fromager to build your Python dependency trees from source

    • Optimizing distributed AI inference: Advanced deployment patterns

    What’s up next?

    Learning Path Feature image for Red Hat OpenShift

    Bridging the gap: Integrate legacy VMs into a zero trust service mesh

    Dive into how to onboard legacy virtual machines into modernized workloads...
    Red Hat Developers logo LinkedIn YouTube Twitter Facebook

    Platforms

    • Red Hat AI
    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    Build

    • Developer Sandbox
    • Developer tools
    • Interactive tutorials
    • API catalog

    Quicklinks

    • Learning resources
    • E-books
    • Cheat sheets
    • Blog
    • Events
    • Newsletter

    Communicate

    • About us
    • Contact sales
    • Find a partner
    • Report a website issue
    • Site status dashboard
    • Report a security problem

    RED HAT DEVELOPER

    Build here. Go anywhere.

    We serve the builders. The problem solvers who create careers with code.

    Join us if you’re a developer, software engineer, web designer, front-end designer, UX designer, computer scientist, architect, tester, product manager, project manager or team lead.

    Sign me up

    Red Hat legal and privacy links

    • About Red Hat
    • Jobs
    • Events
    • Locations
    • Contact Red Hat
    • Red Hat Blog
    • Inclusion at Red Hat
    • Cool Stuff Store
    • Red Hat Summit
    © 2026 Red Hat

    Red Hat legal and privacy links

    • Privacy statement
    • Terms of use
    • All policies and guidelines
    • Digital accessibility

    Chat Support

    Please log in with your Red Hat account to access chat support.