Learn · Understand · Build

Certificate Rotation — A Best-Practice Guide for LFIs and TPPs

CategorySecurityRead7 minUpdated3 Jun 2026

Every certificate in the Trust Framework has a finite life. Rotating it — replacing it with a fresh certificate before the old one expires — is a routine operational task, but one that breaks live services if it is missed. This guide explains which certificates are yours to rotate, when to act, and the safe overlap pattern that keeps traffic flowing through the cutover.

CertificatesTrust FrameworkmTLS
Rotate before expiry — not after

A certificate that reaches its expiry date stops being trusted. An expired transport certificate fails the mTLS handshake; an expired signing certificate makes every JWT you sign unverifiable. In both cases the affected service stops working until a valid certificate is in place. Always complete rotation before the expiry date.

01 The golden rule

You rotate only the certificates whose private key you hold

Not every certificate that appears under your organisation is yours to manage. The rule is simple:

  • You hold the private key → the certificate is yours to rotate. You generated the key and CSR yourself, so only you can produce a replacement.
  • Nebras holds the private keyNebras rotates it. Any certificate where Ozone supplied the CSR, or where the key material lives on the API Hub, is rotated by Nebras with no action required from you. From your perspective these certificates appear under your organisation but require no operational involvement.

The canonical illustration is the server transport pair described in the Certificate Walkthroughs: S1 (Ozone holds the private key — Nebras rotates it) versus S4 (the LFI holds the private key — the LFI rotates it). The same split applies to every certificate on your organisation.

Record the private-key holder in the certificate description

Because who-holds-the-key decides who rotates, make it impossible to get wrong: state the holder in the certificate's description field when you create it. The walkthroughs already follow this convention — e.g. S1 - Ozone holds Private Key - TPP-APIHub and S4 - I hold Private Key - APIHub-OzoneConnect. A glance at the description then tells any operator whether a given certificate is theirs to renew or Nebras's.

TPPs hold the private key for all of their application certificates — transport, signing, and (where used) encryption — so a TPP rotates all of them itself. LFIs rotate the certificates they generated (such as S4 and their client transport and signing certificates) and leave the Ozone-held certificates to Nebras.

02 Lifetimes and reminders

13 months, with email reminders from two months out

With one exception, every certificate in the Trust Framework expires 13 months after it is issued:

  • Transport, signing, and application encryption certificates — valid for 13 months, then must be rotated.
  • The server encryption key (SERVER ENCKEY)does not expire, and therefore does not require periodic rotation.
The Trust Framework reminds you before expiry

You do not have to track expiry dates by hand. The Trust Framework (directory) sends email notifications about upcoming certificate expiry, issued regularly and starting two months before the expiry date. Treat the first reminder as your cue to plan the rotation — it leaves ample time to generate, deploy, and validate the replacement before the deadline.

Make sure the email recipients on your organisation are correct and monitored, so these reminders reach the team that owns rotation. See Contacts for managing notification recipients.

03 The mechanism

Overlap, cut over, then retire

Rotation is not a single in-place swap — it is a controlled overlap. A new certificate is issued and published alongside the old one, so both are trusted at the same time. You then move your service onto the new key, confirm it works, and only afterwards retire the old certificate. Nothing breaks because there is never a moment when no valid certificate exists.

  1. Generate a new key and CSR. Produce a fresh 2048-bit RSA private key and a SHA-256 CSR with the same subject fields as the certificate you are replacing. In production this MUST happen inside your HSM or equivalent secure key management infrastructure.
    openssl (demonstration only)bash
    openssl req -new -newkey rsa:2048 -nodes \
      -keyout <UUID>.key \
      -out <UUID>.csr \
      -subj "/C=AE/O=<LegalName>/OU=<OrganizationId>/CN=<UUID>" \
      -sha256
  2. Upload the CSR and issue the new certificate. Upload it in the Trust Framework exactly as you did when the certificate was first created. The new certificate receives its own Key ID (kid), and the Trust Framework publishes it to your organisation's JWKS automatically.
  3. Both keys are now live. During the overlap, the old and new kids are both resolvable from your JWKS. Any party that verifies your certificates against the JWKS will accept either one, which is what makes a zero-downtime cutover possible.
  4. Cut over to the new key. Switch your service to present (transport) or sign with (signing) the new certificate. See the type-specific guidance below.
  5. Verify, then retire the old certificate. Confirm the new key is in use and working, then revoke or remove the old certificate per your key-destruction policy. See Secure Management.
Rotation reuses the creation steps you already know

Steps 1–2 are identical to first-time certificate creation. If you have generated a certificate before — see Keys & Certificates (LFI) or Keys & Certificates (TPP) — you already know the mechanics. Rotation adds only the overlap-and-cutover discipline around them.

04 Transport certificates

Rotating the certificate used for mTLS

A transport certificate authenticates your client during the mTLS handshake. To rotate it:

  • Issue the new transport certificate (overlap steps 1–2 above).
  • Deploy the new certificate and its private key to the infrastructure that terminates mTLS — for an LFI-held server transport certificate (S4), that is your Ozone Connect server; for a TPP, that is wherever your client establishes outbound mTLS connections.
  • Re-run connectivity validation. After transport certificates are rotated, the Hub re-verifies connectivity using the Health Check endpoints (/hello-mtls, /echo-cert). Confirm these pass on the new certificate before retiring the old one.
  • Remove the old certificate from your infrastructure once the new one is confirmed working.
The OU pin survives rotation

Where the Hub authenticates your transport certificate by pinning the OU (your Organisation ID) rather than a specific certificate, a rotation that keeps the same subject fields needs no configuration change on the verifying side — the new certificate matches the same pin. This is why keeping the CSR subject identical to the previous certificate matters.

05 Signing certificates

Rotating the certificate used to sign JWTs

A signing certificate proves the integrity and authenticity of the JWTs you send — client assertions, request objects, and similar. The key detail when rotating is the kid:

  • Issue the new signing certificate (overlap steps 1–2 above) and note its new kid.
  • During the overlap, both the old and new kid are published to your signing JWKS, so JWTs signed with either key continue to verify.
  • Cut over by signing new JWTs with the new private key and setting the kid header to the new certificate's Key ID. The verifying party resolves that kid from your JWKS and validates the signature. See Message Signing for how the kid is used in the JWT header.
  • Once you have fully switched to signing with the new key, retire the old signing certificate.
Always sign with the kid that is actually in use

The most common rotation mistake is updating the certificate but continuing to send the old kid in the JWT header, or vice versa. The kid you put in the header MUST correspond to the private key that produced the signature. Verify the two match after every rotation.

06 Checklist

Before you mark a rotation complete

  • The certificate being rotated is one whose private key you hold (otherwise Nebras rotates it).
  • The new certificate was issued before the old one's expiry date.
  • The new key and CSR were generated inside your HSM / secure key management for production.
  • The new kid is published to your JWKS and resolvable.
  • Transport: Health Check connectivity validation passes on the new certificate.
  • Signing: new JWTs are signed with the new key and carry the matching kid.
  • The old certificate is retired and the old private key destroyed per your key-management policy.
  • The certificate description records who holds the private key.