Beyond Spreadsheets: A Survival Guide to Certificate Management in Multi-Cloud

The move to multi-cloud isn't a trend; it's the default operational model for modern enterprises. It promises flexibility, resilience, and the ability to use best-of-breed services from AWS, Azure, an...

Tim Henrich
January 23, 2026
8 min read
28 views

Beyond Spreadsheets: A Survival Guide to Certificate Management in Multi-Cloud

The move to multi-cloud isn't a trend; it's the default operational model for modern enterprises. It promises flexibility, resilience, and the ability to use best-of-breed services from AWS, Azure, and Google Cloud. But this distributed power comes at a cost—a staggering complexity that shatters traditional IT management, especially for something as critical as TLS certificates.

For years, many organizations have limped by with spreadsheets, calendar reminders, and frantic emails to manage certificate renewals. This approach was always fragile, but a seismic shift in the industry is about to make it completely obsolete. With Google leading the charge to reduce public TLS certificate validity to just 90 days, the era of manual certificate management is over.

Failing to adapt isn't just an inconvenience; it's a direct threat to your business. Unexpected certificate expirations lead to service outages, eroded customer trust, and frantic, all-hands-on-deck fire drills. In a multi-cloud world, the problem is magnified tenfold. How do you track a certificate on an AWS Load Balancer, another in an Azure App Service, and a third used by a GKE cluster, all issued by different authorities?

This guide provides a practical, actionable framework for taming certificate chaos in your multi-cloud environment. We'll move beyond the problems and dive into the automated, policy-driven solutions you can implement today to stay secure, compliant, and online.

The Multi-Cloud Dilemma: Visibility Gaps and Certificate Sprawl

Before we build the solution, we must understand the core challenges that make multi-cloud certificate management so difficult. Traditional, centralized approaches fail when your infrastructure is intentionally decentralized.

1. The Silo Effect of Cloud-Native PKI

Each major cloud provider offers a compelling, easy-to-use certificate service:
* AWS Certificate Manager (ACM)
* Azure Key Vault
* Google Cloud Certificate Authority Service

These tools are excellent for managing certificates within their own ecosystem. They automate renewals for services like ALBs or Application Gateways, which is a huge step up. However, in a multi-cloud reality, they create isolated islands of control. The team managing Azure has no visibility into the certificates being issued in GCP. This "silo effect" makes it impossible to enforce consistent security policies or even answer a simple question: "What certificates do we have, and when do they expire?"

2. Certificate Sprawl is Inevitable

The problem extends beyond the big three cloud providers. Your organization likely has certificates from public CAs like Let's Encrypt, commercial CAs for EV certificates, and perhaps an on-premise Microsoft CA for internal services. Add to this the explosion of machine-to-machine (mTLS) communication in microservices and service meshes, and the number of certificates skyrockets.

A 2023 Keyfactor report found that 73% of organizations still rely on spreadsheets for tracking. This manual inventory is perpetually out of date, incomplete, and prone to human error—a recipe for disaster when you're managing thousands of certificates across dozens of environments.

3. The Automation Gap: From Issuance to Deployment

Even if you automate certificate issuance using the ACME protocol, a critical gap often remains: deployment. The new certificate files sit on a server, waiting for a network engineer to manually update 15 different load balancers, 5 Kubernetes Ingress controllers, and a fleet of web servers. This manual handoff is a major bottleneck and a primary source of outages. A famous Microsoft Teams outage in 2022 was caused by exactly this—an expired certificate that wasn't deployed in time.

The Modern Framework: Visibility, Automation, and Policy

To survive and thrive in a multi-cloud world with 90-day certificates, you need a strategy built on three pillars.

Pillar 1: Establish a Centralized "Single Pane of Glass"

You cannot manage what you cannot see. The foundational step is to create a comprehensive, real-time inventory of every single certificate across all your environments.

This is not a one-time spreadsheet export. It requires a continuous discovery process. Tools in this space connect directly to your cloud accounts, Kubernetes clusters, and servers to scan for certificates and aggregate the metadata. This is the core principle behind services like Expiring.at, which provides a unified dashboard to monitor all your certificates, regardless of their issuer or location.

A central inventory should tell you at a glance:
* Common Name (CN) and Subject Alternative Names (SANs)
* Issuer (CA)
* Expiration Date
* Key Algorithm and Size
* Location (e.g., AWS Account ID, Azure Resource Group, Kubernetes Ingress)

With this visibility, you can finally eliminate surprises. Instead of reacting to an outage, you get proactive alerts 30, 15, and 7 days before an expiration, giving you time to act—or better yet, to verify that your automation handled it correctly.

Pillar 2: Implement End-to-End Automation

With a 90-day lifecycle, automation is non-negotiable. The goal is "zero-touch" certificate management, where the entire lifecycle—from request to renewal and deployment—happens without human intervention.

The Power of cert-manager in Kubernetes

For containerized workloads, cert-manager has become the de facto standard. It runs as an operator inside your Kubernetes cluster and automates the entire process. It's a perfect example of modern certificate automation in a multi-cloud context, as it can manage certificates for services running on EKS (AWS), AKS (Azure), or GKE (Google Cloud).

Here’s a practical example of how cert-manager requests a Let's Encrypt certificate for an application:

First, you define an Issuer. This tells cert-manager how to obtain certificates. In this case, we're using Let's Encrypt with an HTTP-01 challenge.

# issuer.yaml
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: your-email@example.com
    privateKeySecretRef:
      name: letsencrypt-prod-account-key
    solvers:
    - http01:
        ingress:
          class: nginx

Next, you simply annotate your Ingress resource. cert-manager sees the annotation and automatically handles the rest.

# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app-ingress
  annotations:
    # Tell cert-manager to use our ClusterIssuer
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - my-app.your-domain.com
    # cert-manager will create and populate this secret
    secretName: my-app-tls-secret
  rules:
  - host: my-app.your-domain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-app-service
            port:
              number: 80

Once you apply these files, cert-manager will:
1. Create a temporary pod and Ingress rule to solve the ACME challenge.
2. Obtain the certificate from Let's Encrypt.
3. Store the certificate and private key in the my-app-tls-secret Kubernetes Secret.
4. Configure the Ingress controller to use this secret for TLS termination.
5. Automatically renew the certificate (typically 30 days before it expires) and repeat the process.

This "zero-touch" model can be extended to other infrastructure using tools like HashiCorp Vault or custom automation scripts that integrate with cloud provider APIs to deploy renewed certificates to load balancers, CDNs, and other endpoints.

Pillar 3: Enforce Standards with Policy-as-Code

Automation without guardrails can create a new kind of chaos. In a multi-cloud environment, how do you ensure the GCP team isn't using weak 2048-bit RSA keys while the Azure team correctly uses ECDSA P-256?

The answer is Policy-as-Code (PaC).

Using a policy engine like Open Policy Agent (OPA), you can define rules for your certificate infrastructure in a declarative language (Rego). These policies can be integrated directly into your CI/CD pipeline or certificate management platform.

A sample policy could enforce:
* Approved CAs: Only allow certificates from your approved list of issuers.
* Key Strength: Reject any request for a key smaller than 3072-bit RSA or not using approved elliptic curves.
* Domain Validation: Ensure certificate requests only come from teams authorized to manage specific domains.
* Wildcard Restrictions: Prohibit or limit the use of wildcard certificates.

When a developer tries to request a non-compliant certificate, the pipeline fails early with a clear error message. This shifts security left, making it part of the development process rather than an afterthought. It ensures consistency and security across all your cloud environments without manual reviews.

Best Practices for a Resilient Multi-Cloud PKI

  1. Centralize First, Automate Second: Don't try to automate a process you don't understand. Start by getting full visibility with a tool like Expiring.at. Once you know what you have, you can prioritize your automation efforts.
  2. Embrace Short-Lived Certificates: The 90-day mandate is a blessing in disguise. Shifting your mindset to treat certificates as ephemeral credentials, not long-term assets, forces good automation hygiene and drastically reduces the risk of a compromised key.
  3. Integrate with Your DevOps Toolchain: Certificate management should not be a separate, siloed process. Embed it into your existing IaC tools (Terraform, Pulumi) and CI/CD pipelines (GitLab, Jenkins, GitHub Actions).
  4. Prepare for Crypto-Agility: The next major cryptographic shift is on the horizon with Post-Quantum Cryptography (PQC). A hardcoded, manual system will be impossible to migrate. An automated, policy-driven framework allows you to update algorithms and key types via a simple policy change, ensuring you are ready for the future.

Conclusion: From Reactive Firefighting to Proactive Control

Managing certificates in a multi-cloud environment is no longer a task for spreadsheets and calendar alerts. The impending 90-day certificate lifespan is the final nail in the coffin for manual processes. It's a forcing function for adopting a modern, automated, and policy-driven approach.

By building your strategy on the three pillars of centralized visibility, end-to-end automation, and policy-as-code, you can transform certificate management from a source of risk and anxiety into a seamless, secure, and automated background process.

Your first step is simple: find out what you have. Start by deploying a discovery and monitoring solution to get

Share This Insight

Related Posts